ZQuest Classic Coverage Report


Directory: src/
File: src/zq/zq_custom.cpp
Date: 2024-05-26 01:44:15
Exec Total Coverage
Lines: 836 3997 20.9%
Functions: 3 80 3.8%
Branches: 60 2225 2.7%

Line Branch Exec Source
1 #include <map>
2 #include <cstring>
3 #include <stdio.h>
4 #include <cstring>
5
6 #include "base/qrs.h"
7 #include "base/packfile.h"
8 #include "base/gui.h"
9 #include "qst.h"
10 #include "zc/zc_custom.h"
11 #include "zq/zq_custom.h"
12 #include "tiles.h"
13 #include "zq/zq_tiles.h"
14 #include "zq/zq_misc.h"
15 #include "zq/zquest.h"
16 #include "items.h"
17 #include "base/zsys.h"
18 #include "sfx.h"
19 #include "init.h"
20 #include "defdata.h"
21 #include "zc/ffscript.h"
22 #include "dialog/itemeditor.h"
23 #include "dialog/misc_sfx.h"
24 #include "dialog/misc_sprs.h"
25 #include "dialog/info.h"
26 #include "dialog/spritedata.h"
27 #include "dialog/info_lister.h"
28 #include "zinfo.h"
29 extern FFScript FFCore;
30
31 extern int32_t ex;
32 extern void reset_itembuf(itemdata *item, int32_t id);
33 extern const char *sfxlist(int32_t index, int32_t *list_size);
34 // zq_subscr.cpp
35 extern int32_t sstype_drop_proc(int32_t msg,DIALOG *d,int32_t c);
36
37 extern int32_t biw_cnt;
38
39 extern ZModule zcm;
40 extern zcmodule moduledata;
41
42
43 #ifdef _MSC_VER
44 #define stricmp _stricmp
45 #endif
46
47
48 int32_t hero_animation_speed = 1; //lower is faster animation
49
50 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c);
51
52 int32_t d_cstile_proc(int32_t msg,DIALOG *d,int32_t c)
53 {
54 //these are here to bypass compiler warnings about unused arguments
55 c=c;
56
57 switch(msg)
58 {
59 case MSG_CLICK:
60 {
61 int32_t f = 0;
62 int32_t t = d->d1;
63 int32_t cs = d->d2;
64
65 if((CHECK_CTRL_CMD)
66 ? select_tile_2(t,f,1,cs,true)
67 : select_tile(t,f,1,cs,true))
68 {
69 d->d1 = t;
70 d->d2 = cs;
71 return D_REDRAW;
72 }
73 }
74 break;
75
76 case MSG_DRAW:
77 d->w = 36;
78 d->h = 36;
79
80 BITMAP *buf = create_bitmap_ex(8,20,20);
81 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
82
83 if(buf && bigbmp)
84 {
85 clear_bitmap(buf);
86
87 if(d->d1)
88 overtile16(buf,d->d1,2,2,d->d2,0);
89
90 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-2, d->h-2);
91 destroy_bitmap(buf);
92 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
93 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
94 destroy_bitmap(bigbmp);
95 }
96
97 // text_mode(d->bg);
98 FONT *fonty = font;
99 textprintf_ex(screen,fonty,d->x+d->w,d->y+2,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"Tile: %d",d->d1);
100 textprintf_ex(screen,fonty,d->x+d->w,d->y+text_height(fonty)+3,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"CSet: %d",d->d2);
101 break;
102 }
103
104 return D_O_K;
105 }
106
107 4 void large_dialog(DIALOG *d)
108 {
109 4 large_dialog(d, 1.5f);
110 4 }
111
112 4 void large_dialog(DIALOG *d, float RESIZE_AMT)
113 {
114
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 if(d[0].d1 == 0)
115 {
116 4 d[0].d1 = 1;
117 4 int32_t oldwidth = d[0].w;
118 4 int32_t oldheight = d[0].h;
119 4 int32_t oldx = d[0].x;
120 4 int32_t oldy = d[0].y;
121 4 d[0].x -= int32_t(float(d[0].w)/RESIZE_AMT);
122 4 d[0].y -= int32_t(float(d[0].h)/RESIZE_AMT);
123 4 d[0].w = int32_t(float(d[0].w)*RESIZE_AMT);
124 4 d[0].h = int32_t(float(d[0].h)*RESIZE_AMT);
125
126
2/2
✓ Branch 0 taken 204 times.
✓ Branch 1 taken 4 times.
208 for(int32_t i=1; d[i].proc!=NULL; i++)
127 {
128 // Place elements horizontally
129 204 double xpc = ((double)(d[i].x - oldx) / (double)oldwidth);
130 204 d[i].x = int32_t(d[0].x + (xpc*double(d[0].w)));
131
132 // Horizontally resize elements
133
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
134 {
135 d[i].x += (int32_t)(float(d[i].w)/4.f);
136 }
137
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
204 else if(d[i].proc == d_comboframe_proc)
138 {
139 d[i].w *= 2;
140 d[i].w -= 4;
141 }
142
3/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 204 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 204 times.
204 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
143 {
144 d[i].w *= 2;
145 }
146
3/4
✓ Branch 0 taken 132 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 132 times.
204 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
147 72 d[i].w = int32_t(d[i].w*1.5);
148 132 else d[i].w = int32_t(float(d[i].w)*RESIZE_AMT);
149
150 // Place elements vertically
151 204 double ypc = ((double)(d[i].y - oldy) / (double)oldheight);
152 204 d[i].y = int32_t(d[0].y + (ypc*double(d[0].h)));
153
154 // Vertically resize elements
155
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
156 {
157 }
158
4/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
204 else if(d[i].proc == jwin_edit_proc || d[i].proc == jwin_check_proc || d[i].proc == jwin_checkfont_proc)
159 {
160 8 d[i].h = int32_t((double)d[i].h*1.5);
161 8 }
162
5/10
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 196 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 196 times.
392 else if(d[i].proc == jwin_droplist_proc || d[i].proc == d_ndroplist_proc || d[i].proc == d_idroplist_proc || d[i].proc == d_nidroplist_proc || d[i].proc == d_dropdmaplist_proc
163
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
196 || d[i].proc == jwin_as_droplist_proc || d[i].proc == d_ffcombolist_proc || d[i].proc == sstype_drop_proc
164
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 || d[i].proc == d_comboalist_proc)
165 {
166 d[i].y += int32_t((double)d[i].h*0.25);
167 d[i].h = int32_t((double)d[i].h*1.25);
168 }
169
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == d_comboframe_proc)
170 {
171 d[i].h *= 2;
172 d[i].h -= 4;
173 }
174
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
196 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
175 {
176 d[i].h *= 2;
177 }
178
3/4
✓ Branch 0 taken 124 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 124 times.
196 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
179 72 d[i].h = int32_t(d[i].h*1.5);
180 124 else d[i].h = int32_t(float(d[i].h)*RESIZE_AMT);
181
182 // Fix frames
183
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc == jwin_frame_proc)
184 {
185 d[i].x++;
186 d[i].y++;
187 d[i].w-=4;
188 d[i].h-=4;
189 }
190 204 }
191 4 }
192
193
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 204 times.
208 for(int32_t i=1; d[i].proc != NULL; i++)
194 {
195
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc==jwin_slider_proc)
196 continue;
197
198 // Bigger font
199
5/8
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✓ Branch 3 taken 104 times.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
304 bool bigfontproc = (d[i].proc != jwin_droplist_proc && d[i].proc != jwin_abclist_proc && d[i].proc != d_wlist_proc && d[i].proc != jwin_list_proc && d[i].proc != d_dmaplist_proc
200
5/10
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 && d[i].proc != d_dropdmaplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_wclist_proc && d[i].proc != d_ndroplist_proc
201
6/12
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
100 && d[i].proc != d_idroplist_proc && d[i].proc != d_nidroplist_proc && d[i].proc != jwin_as_droplist_proc && d[i].proc != d_ffcombolist_proc && d[i].proc != d_enelist_proc && d[i].proc != sstype_drop_proc
202
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 100 times.
100 && d[i].proc != d_comboalist_proc);
203
204
3/4
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 104 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100 times.
204 if(bigfontproc && !d[i].dp2)
205 {
206 100 d[i].dp2 = get_zc_font(font_lfont_l);
207 100 }
208
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 104 times.
104 else if(!bigfontproc)
209 {
210 104 ((ListData *) d[i].dp)->font = &a4fonts[font_lfont_l];
211 104 }
212
213 // Make checkboxes work
214
2/2
✓ Branch 0 taken 196 times.
✓ Branch 1 taken 8 times.
204 if(d[i].proc == jwin_check_proc)
215 8 d[i].proc = jwin_checkfont_proc;
216
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == jwin_radio_proc)
217 d[i].proc = jwin_radiofont_proc;
218 204 }
219
220 4 jwin_center_dialog(d);
221 4 }
222
223 /*****************************/
224 /****** onCustomItems ******/
225 /*****************************/
226
227 9 static ListData weapon_list(weaponlist_num, &a4fonts[font_pfont]);
228
229 const char *defenselist(int32_t index, int32_t *list_size)
230 {
231 if(index>=0)
232 {
233 bound(index,0,edLAST-1);
234
235 switch(index)
236 {
237 case 0:
238 return "(None)";
239
240 case edHALFDAMAGE:
241 return "1/2 Damage";
242
243 case edQUARTDAMAGE:
244 return "1/4 Damage";
245
246
247 case edSTUNONLY:
248 return "Stun";
249
250 case edSTUNORCHINK:
251 return "Stun Or Block";
252
253 case edSTUNORIGNORE:
254 return "Stun Or Ignore";
255
256 case edCHINKL1:
257 return "Block If < 1";
258
259 case edCHINKL2:
260 return "Block If < 2";
261
262 case edCHINKL4:
263 return "Block If < 4";
264
265 case edCHINKL6:
266 return "Block If < 6";
267
268 case edCHINKL8:
269 return "Block If < 8";
270
271
272
273 case edCHINK:
274 return "Block";
275
276 case edIGNOREL1:
277 return "Ignore If < 1";
278
279 case edIGNORE:
280 return "Ignore";
281
282
283
284
285 case ed1HKO:
286 return "One-Hit-Kill";
287
288 case edCHINKL10: //If damage is less than 10
289 return "Block if Power < 10";
290
291 case ed2x: //Double damage
292 return "Double Damage";
293 case ed3x: //Triple Damage
294 return "Triple Damage";
295 case ed4x: //4x damage
296 return "Quadruple Damage";
297
298 case edHEAL: //recover the weapon damage in HP
299 return "Enemy Gains HP = Damage";
300
301 case edTRIGGERSECRETS: //Triggers screen secrets.
302 return "Trigger Screen Secrets";
303
304 case edSPLIT:
305 return "Split";
306 case edREPLACE:
307 return "Transform";
308
309 case edSUMMON:
310 return "Summon";
311
312 case edEXPLODESMALL:
313 return "Bomb Explosion";
314
315 case edEXPLODELARGE:
316 return "Superbomb Explosion";
317
318 case edEXPLODEHARMLESS:
319 return "Harmless Explosion";
320
321 case edFREEZE: //Hit by ice..
322 return "Freeze Solid";
323
324 case edSWITCH:
325 return "Switch w/ Player";
326 default:
327 return "[reserved]";
328 }
329 }
330
331 *list_size = edLAST;
332 return NULL;
333 }
334
335 9 static ListData defense_list(defenselist, &font);
336
337 const char *itemscriptdroplist(int32_t index, int32_t *list_size)
338 {
339 if(index<0)
340 {
341 *list_size = biitems_cnt;
342 return NULL;
343 }
344
345 return biitems[index].first.c_str();
346 }
347
348 9 ListData itemscript_list(itemscriptdroplist, &a4fonts[font_pfont]);
349
350 const char *itemspritescriptdroplist(int32_t index, int32_t *list_size)
351 {
352 if(index<0)
353 {
354 *list_size = biitemsprites_cnt;
355 return NULL;
356 }
357
358 return biditemsprites[index].first.c_str();
359 }
360
361 9 ListData itemspritescript_list(itemspritescriptdroplist, &a4fonts[font_pfont]);
362
363 const char *lweaponscriptdroplist(int32_t index, int32_t *list_size)
364 {
365 if(index<0)
366 {
367 *list_size = bilweapons_cnt;
368 return NULL;
369 }
370
371 return bilweapons[index].first.c_str();
372 }
373
374 9 ListData lweaponscript_list(lweaponscriptdroplist, &a4fonts[font_pfont]);
375
376 void edit_itemdata(int32_t index)
377 {
378 call_item_editor(index);
379 }
380
381 int32_t readoneitem(PACKFILE *f, int32_t index)
382 {
383 dword section_version = 0;
384 dword section_cversion = 0;
385 int32_t zversion = 0;
386 int32_t zbuild = 0;
387 itemdata tempitem;
388 memset(&tempitem, 0, sizeof(itemdata));
389 //reset_itembuf(&tempitem,i);
390
391
392 char istring[64]={0};
393 //section version info
394 if(!p_igetl(&zversion,f))
395 {
396 return 0;
397 }
398 if(!p_igetl(&zbuild,f))
399 {
400 return 0;
401 }
402
403 if(!p_igetw(&section_version,f))
404 {
405 return 0;
406 }
407
408 if(!p_igetw(&section_cversion,f))
409 {
410 return 0;
411 }
412 al_trace("readoneitem section_version: %d\n", section_version);
413 al_trace("readoneitem section_cversion: %d\n", section_cversion);
414
415 if ( zversion > ZELDA_VERSION )
416 {
417 al_trace("Cannot read .zitem packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
418 return 0;
419 }
420 else if ( ( section_version > V_ITEMS ) || ( section_version == V_ITEMS && section_cversion < CV_ITEMS ) )
421 {
422 al_trace("Cannot read .zitem packfile made using V_ITEMS (%d) subversion (%d)\n", section_version, section_cversion);
423 return 0;
424
425 }
426 else
427 {
428 al_trace("Reading a .zitem packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
429 }
430
431 if(!pfread(&istring, 64, f))
432 {
433 return 0;
434 }
435
436 if(!p_igetl(&tempitem.tile,f))
437 {
438 return 0;
439 }
440
441 if(!p_getc(&tempitem.misc_flags,f))
442 {
443 return 0;
444 }
445
446 if(!p_getc(&tempitem.csets,f))
447 {
448 return 0;
449 }
450
451 if(!p_getc(&tempitem.frames,f))
452 {
453 return 0;
454 }
455
456 if(!p_getc(&tempitem.speed,f))
457 {
458 return 0;
459 }
460
461 if(!p_getc(&tempitem.delay,f))
462 {
463 return 0;
464 }
465
466 if(!p_igetl(&tempitem.ltm,f))
467 {
468 return 0;
469 }
470
471 if(!p_igetl(&tempitem.family,f))
472 {
473 return 0;
474 }
475
476 if(!p_getc(&tempitem.fam_type,f))
477 {
478 return 0;
479 }
480
481 if(!p_igetl(&tempitem.power,f))
482 {
483 return 0;
484 }
485
486 if(!p_igetl(&tempitem.flags,f))
487 {
488 return 0;
489 }
490
491 if(!p_igetw(&tempitem.script,f))
492 {
493 return 0;
494 }
495
496 if(!p_getc(&tempitem.count,f))
497 {
498 return 0;
499 }
500
501 if(!p_igetw(&tempitem.amount,f))
502 {
503 return 0;
504 }
505
506 if(!p_igetw(&tempitem.collect_script,f))
507 {
508 return 0;
509 }
510
511 if(!p_igetw(&tempitem.setmax,f))
512 {
513 return 0;
514 }
515
516 if(!p_igetw(&tempitem.max,f))
517 {
518 return 0;
519 }
520
521 if(!p_getc(&tempitem.playsound,f))
522 {
523 return 0;
524 }
525
526 for(int32_t j=0; j<8; j++)
527 {
528 if(!p_igetl(&tempitem.initiald[j],f))
529 {
530 return 0;
531 }
532 }
533
534 for(int32_t j=0; j<2; j++)
535 {
536 if(!p_getc(&tempitem.initiala[j],f))
537 {
538 return 0;
539 }
540 }
541
542 if(!p_getc(&tempitem.wpn,f))
543 {
544 return 0;
545 }
546
547 if(!p_getc(&tempitem.wpn2,f))
548 {
549 return 0;
550 }
551
552 if(!p_getc(&tempitem.wpn3,f))
553 {
554 return 0;
555 }
556
557 if(!p_getc(&tempitem.wpn4,f))
558 {
559 return 0;
560 }
561
562 if(!p_getc(&tempitem.wpn5,f))
563 {
564 return 0;
565 }
566
567 if(!p_getc(&tempitem.wpn6,f))
568 {
569 return 0;
570 }
571
572 if(!p_getc(&tempitem.wpn7,f))
573 {
574 return 0;
575 }
576
577 if(!p_getc(&tempitem.wpn8,f))
578 {
579 return 0;
580 }
581
582 if(!p_getc(&tempitem.wpn9,f))
583 {
584 return 0;
585 }
586
587 if(!p_getc(&tempitem.wpn10,f))
588 {
589 return 0;
590 }
591
592 if(!p_getc(&tempitem.pickup_hearts,f))
593 {
594 return 0;
595 }
596
597 if(!p_igetl(&tempitem.misc1,f))
598 {
599 return 0;
600 }
601
602 if(!p_igetl(&tempitem.misc2,f))
603 {
604 return 0;
605 }
606
607 if(section_version < 53)
608 {
609 byte tempbyte;
610 if(!p_getc(&tempbyte,f))
611 {
612 return 0;
613 }
614 tempitem.cost_amount[0] = tempbyte;
615 switch(tempitem.family)
616 {
617 case itype_arrow:
618 case itype_bomb:
619 case itype_sbomb:
620 tempitem.cost_amount[1] = 1;
621 break;
622 default:
623 tempitem.cost_amount[1] = 0;
624 }
625 }
626 else
627 {
628 for(auto q = 0; q < 2; ++q)
629 {
630 if(!p_igetw(&tempitem.cost_amount[q],f))
631 {
632 return 0;
633 }
634 }
635 }
636
637 if(!p_igetl(&tempitem.misc3,f))
638 {
639 return 0;
640 }
641
642 if(!p_igetl(&tempitem.misc4,f))
643 {
644 return 0;
645 }
646
647 if(!p_igetl(&tempitem.misc5,f))
648 {
649 return 0;
650 }
651
652 if(!p_igetl(&tempitem.misc6,f))
653 {
654 return 0;
655 }
656
657 if(!p_igetl(&tempitem.misc7,f))
658 {
659 return 0;
660 }
661
662 if(!p_igetl(&tempitem.misc8,f))
663 {
664 return 0;
665 }
666
667 if(!p_igetl(&tempitem.misc9,f))
668 {
669 return 0;
670 }
671
672 if(!p_igetl(&tempitem.misc10,f))
673 {
674 return 0;
675 }
676
677 if(!p_getc(&tempitem.usesound,f))
678 {
679 return 0;
680 }
681
682 if(!p_getc(&tempitem.usesound2,f))
683 {
684 return 0;
685 }
686
687 if ( zversion >= 0x255 )
688 {
689 if ( section_version >= 45 )
690 {
691 //New itemdata vars -Z
692 //! version 27
693
694 if(!p_getc(&tempitem.useweapon,f))
695 {
696 return 0;
697 }
698 if(!p_getc(&tempitem.usedefence,f))
699 {
700 return 0;
701 }
702 if(!p_igetl(&tempitem.weaprange,f))
703 {
704 return 0;
705 }
706 if(!p_igetl(&tempitem.weapduration,f))
707 {
708 return 0;
709 }
710 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
711 if(!p_igetl(&tempitem.weap_pattern[q],f))
712 {
713 return 0;
714 }
715 }
716 //version 28
717 if(!p_igetl(&tempitem.duplicates,f))
718 {
719 return 0;
720 }
721 for ( int32_t q = 0; q < INITIAL_D; q++ )
722 {
723 if(!p_igetl(&tempitem.weap_initiald[q],f))
724 {
725 return 0;
726 }
727 }
728 for ( int32_t q = 0; q < INITIAL_A; q++ )
729 {
730 if(!p_getc(&tempitem.weap_initiala[q],f))
731 {
732 return 0;
733 }
734 }
735
736 if(!p_getc(&tempitem.drawlayer,f))
737 {
738 return 0;
739 }
740
741
742 if(!p_igetl(&tempitem.hxofs,f))
743 {
744 return 0;
745 }
746 if(!p_igetl(&tempitem.hyofs,f))
747 {
748 return 0;
749 }
750 if(!p_igetl(&tempitem.hxsz,f))
751 {
752 return 0;
753 }
754 if(!p_igetl(&tempitem.hysz,f))
755 {
756 return 0;
757 }
758 if(!p_igetl(&tempitem.hzsz,f))
759 {
760 return 0;
761 }
762 if(!p_igetl(&tempitem.xofs,f))
763 {
764 return 0;
765 }
766 if(!p_igetl(&tempitem.yofs,f))
767 {
768 return 0;
769 }
770 if(!p_igetl(&tempitem.weap_hxofs,f))
771 {
772 return 0;
773 }
774 if(!p_igetl(&tempitem.weap_hyofs,f))
775 {
776 return 0;
777 }
778 if(!p_igetl(&tempitem.weap_hxsz,f))
779 {
780 return 0;
781 }
782 if(!p_igetl(&tempitem.weap_hysz,f))
783 {
784 return 0;
785 }
786 if(!p_igetl(&tempitem.weap_hzsz,f))
787 {
788 return 0;
789 }
790 if(!p_igetl(&tempitem.weap_xofs,f))
791 {
792 return 0;
793 }
794 if(!p_igetl(&tempitem.weap_yofs,f))
795 {
796 return 0;
797 }
798 if(!p_igetw(&tempitem.weaponscript,f))
799 {
800 return 0;
801 }
802 if(!p_igetl(&tempitem.wpnsprite,f))
803 {
804 return 0;
805 }
806 size_t num_cost_tmr = (section_version > 52 ? 2 : 1);
807 for(size_t q = 0; q < num_cost_tmr; ++q)
808 {
809 if(!p_igetl(&tempitem.magiccosttimer[q],f))
810 {
811 return 0;
812 }
813 }
814 if(!p_igetl(&tempitem.overrideFLAGS,f))
815 {
816 return 0;
817 }
818 if(!p_igetl(&tempitem.tilew,f))
819 {
820 return 0;
821 }
822 if(!p_igetl(&tempitem.tileh,f))
823 {
824 return 0;
825 }
826 if(!p_igetl(&tempitem.weapoverrideFLAGS,f))
827 {
828 return 0;
829 }
830 if(!p_igetl(&tempitem.weap_tilew,f))
831 {
832 return 0;
833 }
834 if(!p_igetl(&tempitem.weap_tileh,f))
835 {
836 return 0;
837 }
838 if(!p_igetl(&tempitem.pickup,f))
839 {
840 return 0;
841 }
842 if(!p_igetw(&tempitem.pstring,f))
843 {
844 return 0;
845 }
846 if(!p_igetw(&tempitem.pickup_string_flags,f))
847 {
848 return 0;
849 }
850
851 size_t num_cost_ctr = (section_version > 52 ? 2 : 1);
852 for(size_t q = 0; q < num_cost_ctr; ++q)
853 {
854 if(!p_getc(&tempitem.cost_counter[q],f))
855 {
856 return 0;
857 }
858 }
859
860 //InitD[] labels
861 for ( int32_t q = 0; q < 8; q++ )
862 {
863 for ( int32_t w = 0; w < 65; w++ )
864 {
865 if(!p_getc(&tempitem.initD_label[q][w],f))
866 {
867 return 0;
868 }
869 }
870 for ( int32_t w = 0; w < 65; w++ )
871 {
872 if(!p_getc(&tempitem.weapon_initD_label[q][w],f))
873 {
874 return 0;
875 }
876 }
877 for ( int32_t w = 0; w < 65; w++ )
878 {
879 if(!p_getc(&tempitem.sprite_initD_label[q][w],f))
880 {
881 return 0;
882 }
883 }
884 if(!p_igetl(&tempitem.sprite_initiald[q],f))
885 {
886 return 0;
887 }
888 }
889 for ( int32_t q = 0; q < 2; q++ )
890 {
891 if(!p_getc(&tempitem.sprite_initiala[q],f))
892 {
893 return 0;
894 }
895
896 }
897 if(!p_igetw(&tempitem.sprite_script,f))
898 {
899 return 0;
900 }
901
902 if ( section_version >= 47 )
903 {
904 if(!p_getc(&tempitem.pickupflag,f))
905 {
906 return 0;
907 }
908 }
909 //read it into an item
910 }
911 }
912 itemsbuf[index] = tempitem;
913 strcpy(item_string[index], istring);
914
915 return 1;
916 }
917
918 int32_t writeoneitem(PACKFILE *f, int32_t i)
919 {
920
921 dword section_version=V_ITEMS;
922 dword section_cversion=CV_ITEMS;
923 int32_t zversion = ZELDA_VERSION;
924 int32_t zbuild = VERSION_BUILD;
925
926
927 //section version info
928 if(!p_iputl(zversion,f))
929 {
930 return 0;
931 }
932 if(!p_iputl(zbuild,f))
933 {
934 return 0;
935 }
936 if(!p_iputw(section_version,f))
937 {
938 new_return(2);
939 }
940
941 if(!p_iputw(section_cversion,f))
942 {
943 new_return(3);
944 }
945
946
947
948 //section data
949
950 if(!pfwrite(item_string[i], 64, f))
951 {
952 new_return(5);
953 }
954
955 if(!p_iputl(itemsbuf[i].tile,f))
956 {
957 new_return(6);
958 }
959
960 if(!p_putc(itemsbuf[i].misc_flags,f))
961 {
962 new_return(7);
963 }
964
965 if(!p_putc(itemsbuf[i].csets,f))
966 {
967 new_return(8);
968 }
969
970 if(!p_putc(itemsbuf[i].frames,f))
971 {
972 new_return(9);
973 }
974
975 if(!p_putc(itemsbuf[i].speed,f))
976 {
977 new_return(10);
978 }
979
980 if(!p_putc(itemsbuf[i].delay,f))
981 {
982 new_return(11);
983 }
984
985 if(!p_iputl(itemsbuf[i].ltm,f))
986 {
987 new_return(12);
988 }
989
990 if(!p_iputl(itemsbuf[i].family,f))
991 {
992 new_return(13);
993 }
994
995 if(!p_putc(itemsbuf[i].fam_type,f))
996 {
997 new_return(14);
998 }
999
1000 if(!p_iputl(itemsbuf[i].power,f))
1001 {
1002 new_return(14);
1003 }
1004
1005 if(!p_iputl(itemsbuf[i].flags,f))
1006 {
1007 new_return(15);
1008 }
1009
1010 if(!p_iputw(itemsbuf[i].script,f))
1011 {
1012 new_return(16);
1013 }
1014
1015 if(!p_putc(itemsbuf[i].count,f))
1016 {
1017 new_return(17);
1018 }
1019
1020 if(!p_iputw(itemsbuf[i].amount,f))
1021 {
1022 new_return(18);
1023 }
1024
1025 if(!p_iputw(itemsbuf[i].collect_script,f))
1026 {
1027 new_return(19);
1028 }
1029
1030 if(!p_iputw(itemsbuf[i].setmax,f))
1031 {
1032 new_return(21);
1033 }
1034
1035 if(!p_iputw(itemsbuf[i].max,f))
1036 {
1037 new_return(22);
1038 }
1039
1040 if(!p_putc(itemsbuf[i].playsound,f))
1041 {
1042 new_return(23);
1043 }
1044
1045 for(int32_t j=0; j<8; j++)
1046 {
1047 if(!p_iputl(itemsbuf[i].initiald[j],f))
1048 {
1049 new_return(24);
1050 }
1051 }
1052
1053 for(int32_t j=0; j<2; j++)
1054 {
1055 if(!p_putc(itemsbuf[i].initiala[j],f))
1056 {
1057 new_return(25);
1058 }
1059 }
1060
1061 if(!p_putc(itemsbuf[i].wpn,f))
1062 {
1063 new_return(26);
1064 }
1065
1066 if(!p_putc(itemsbuf[i].wpn2,f))
1067 {
1068 new_return(27);
1069 }
1070
1071 if(!p_putc(itemsbuf[i].wpn3,f))
1072 {
1073 new_return(28);
1074 }
1075
1076 if(!p_putc(itemsbuf[i].wpn4,f))
1077 {
1078 new_return(29);
1079 }
1080
1081 if(!p_putc(itemsbuf[i].wpn5,f))
1082 {
1083 new_return(30);
1084 }
1085
1086 if(!p_putc(itemsbuf[i].wpn6,f))
1087 {
1088 new_return(31);
1089 }
1090
1091 if(!p_putc(itemsbuf[i].wpn7,f))
1092 {
1093 new_return(32);
1094 }
1095
1096 if(!p_putc(itemsbuf[i].wpn8,f))
1097 {
1098 new_return(33);
1099 }
1100
1101 if(!p_putc(itemsbuf[i].wpn9,f))
1102 {
1103 new_return(34);
1104 }
1105
1106 if(!p_putc(itemsbuf[i].wpn10,f))
1107 {
1108 new_return(35);
1109 }
1110
1111 if(!p_putc(itemsbuf[i].pickup_hearts,f))
1112 {
1113 new_return(36);
1114 }
1115
1116 if(!p_iputl(itemsbuf[i].misc1,f))
1117 {
1118 new_return(37);
1119 }
1120
1121 if(!p_iputl(itemsbuf[i].misc2,f))
1122 {
1123 new_return(38);
1124 }
1125
1126 for(auto q = 0; q < 2; ++q)
1127 {
1128 if(!p_iputw(itemsbuf[i].cost_amount[q],f))
1129 {
1130 new_return(39);
1131 }
1132 }
1133
1134 if(!p_iputl(itemsbuf[i].misc3,f))
1135 {
1136 new_return(40);
1137 }
1138
1139 if(!p_iputl(itemsbuf[i].misc4,f))
1140 {
1141 new_return(41);
1142 }
1143
1144 if(!p_iputl(itemsbuf[i].misc5,f))
1145 {
1146 new_return(42);
1147 }
1148
1149 if(!p_iputl(itemsbuf[i].misc6,f))
1150 {
1151 new_return(43);
1152 }
1153
1154 if(!p_iputl(itemsbuf[i].misc7,f))
1155 {
1156 new_return(44);
1157 }
1158
1159 if(!p_iputl(itemsbuf[i].misc8,f))
1160 {
1161 new_return(45);
1162 }
1163
1164 if(!p_iputl(itemsbuf[i].misc9,f))
1165 {
1166 new_return(46);
1167 }
1168
1169 if(!p_iputl(itemsbuf[i].misc10,f))
1170 {
1171 new_return(47);
1172 }
1173
1174 if(!p_putc(itemsbuf[i].usesound,f))
1175 {
1176 new_return(48);
1177 }
1178
1179 if(!p_putc(itemsbuf[i].usesound2,f))
1180 {
1181 new_return(48);
1182 }
1183
1184 //New itemdata vars -Z
1185 //! version 27
1186
1187 if(!p_putc(itemsbuf[i].useweapon,f))
1188 {
1189 new_return(49);
1190 }
1191 if(!p_putc(itemsbuf[i].usedefence,f))
1192 {
1193 new_return(50);
1194 }
1195 if(!p_iputl(itemsbuf[i].weaprange,f))
1196 {
1197 new_return(51);
1198 }
1199 if(!p_iputl(itemsbuf[i].weapduration,f))
1200 {
1201 new_return(52);
1202 }
1203 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
1204 if(!p_iputl(itemsbuf[i].weap_pattern[q],f))
1205 {
1206 new_return(53);
1207 }
1208 }
1209 //version 28
1210 if(!p_iputl(itemsbuf[i].duplicates,f))
1211 {
1212 new_return(54);
1213 }
1214 for ( int32_t q = 0; q < INITIAL_D; q++ )
1215 {
1216 if(!p_iputl(itemsbuf[i].weap_initiald[q],f))
1217 {
1218 new_return(55);
1219 }
1220 }
1221 for ( int32_t q = 0; q < INITIAL_A; q++ )
1222 {
1223 if(!p_putc(itemsbuf[i].weap_initiala[q],f))
1224 {
1225 new_return(56);
1226 }
1227 }
1228
1229 if(!p_putc(itemsbuf[i].drawlayer,f))
1230 {
1231 new_return(57);
1232 }
1233
1234
1235 if(!p_iputl(itemsbuf[i].hxofs,f))
1236 {
1237 new_return(58);
1238 }
1239 if(!p_iputl(itemsbuf[i].hyofs,f))
1240 {
1241 new_return(59);
1242 }
1243 if(!p_iputl(itemsbuf[i].hxsz,f))
1244 {
1245 new_return(60);
1246 }
1247 if(!p_iputl(itemsbuf[i].hysz,f))
1248 {
1249 new_return(61);
1250 }
1251 if(!p_iputl(itemsbuf[i].hzsz,f))
1252 {
1253 new_return(62);
1254 }
1255 if(!p_iputl(itemsbuf[i].xofs,f))
1256 {
1257 new_return(63);
1258 }
1259 if(!p_iputl(itemsbuf[i].yofs,f))
1260 {
1261 new_return(64);
1262 }
1263 if(!p_iputl(itemsbuf[i].weap_hxofs,f))
1264 {
1265 new_return(65);
1266 }
1267 if(!p_iputl(itemsbuf[i].weap_hyofs,f))
1268 {
1269 new_return(66);
1270 }
1271 if(!p_iputl(itemsbuf[i].weap_hxsz,f))
1272 {
1273 new_return(67);
1274 }
1275 if(!p_iputl(itemsbuf[i].weap_hysz,f))
1276 {
1277 new_return(68);
1278 }
1279 if(!p_iputl(itemsbuf[i].weap_hzsz,f))
1280 {
1281 new_return(69);
1282 }
1283 if(!p_iputl(itemsbuf[i].weap_xofs,f))
1284 {
1285 new_return(70);
1286 }
1287 if(!p_iputl(itemsbuf[i].weap_yofs,f))
1288 {
1289 new_return(71);
1290 }
1291 if(!p_iputw(itemsbuf[i].weaponscript,f))
1292 {
1293 new_return(72);
1294 }
1295 if(!p_iputl(itemsbuf[i].wpnsprite,f))
1296 {
1297 new_return(73);
1298 }
1299
1300 for(auto q = 0; q < 2; ++q)
1301 {
1302 if(!p_iputl(itemsbuf[i].magiccosttimer[q],f))
1303 {
1304 new_return(74);
1305 }
1306 }
1307 if(!p_iputl(itemsbuf[i].overrideFLAGS,f))
1308 {
1309 new_return(75);
1310 }
1311 if(!p_iputl(itemsbuf[i].tilew,f))
1312 {
1313 new_return(76);
1314 }
1315 if(!p_iputl(itemsbuf[i].tileh,f))
1316 {
1317 new_return(77);
1318 }
1319 if(!p_iputl(itemsbuf[i].weapoverrideFLAGS,f))
1320 {
1321 new_return(78);
1322 }
1323 if(!p_iputl(itemsbuf[i].weap_tilew,f))
1324 {
1325 new_return(79);
1326 }
1327 if(!p_iputl(itemsbuf[i].weap_tileh,f))
1328 {
1329 new_return(80);
1330 }
1331 if(!p_iputl(itemsbuf[i].pickup,f))
1332 {
1333 new_return(81);
1334 }
1335 if(!p_iputw(itemsbuf[i].pstring,f))
1336 {
1337 new_return(82);
1338 }
1339 if(!p_iputw(itemsbuf[i].pickup_string_flags,f))
1340 {
1341 new_return(83);
1342 }
1343
1344 for(auto q = 0; q < 2; ++q)
1345 {
1346 if(!p_putc(itemsbuf[i].cost_counter[q],f))
1347 {
1348 new_return(84);
1349 }
1350 }
1351
1352 //InitD[] labels
1353 for ( int32_t q = 0; q < 8; q++ )
1354 {
1355 for ( int32_t w = 0; w < 65; w++ )
1356 {
1357 if(!p_putc(itemsbuf[i].initD_label[q][w],f))
1358 {
1359 new_return(85);
1360 }
1361 }
1362 for ( int32_t w = 0; w < 65; w++ )
1363 {
1364 if(!p_putc(itemsbuf[i].weapon_initD_label[q][w],f))
1365 {
1366 new_return(86);
1367 }
1368 }
1369 for ( int32_t w = 0; w < 65; w++ )
1370 {
1371 if(!p_putc(itemsbuf[i].sprite_initD_label[q][w],f))
1372 {
1373 new_return(87);
1374 }
1375 }
1376 if(!p_iputl(itemsbuf[i].sprite_initiald[q],f))
1377 {
1378 new_return(88);
1379 }
1380 }
1381 for ( int32_t q = 0; q < 2; q++ )
1382 {
1383 if(!p_putc(itemsbuf[i].sprite_initiala[q],f))
1384 {
1385 new_return(89);
1386 }
1387
1388 }
1389 if(!p_iputw(itemsbuf[i].sprite_script,f))
1390 {
1391 new_return(90);
1392 }
1393 if(!p_putc(itemsbuf[i].pickupflag,f))
1394 {
1395 new_return(91);
1396 }
1397 return 1;
1398 }
1399
1400 int32_t onCustomItems()
1401 {
1402 ItemListerDialog().show();
1403 refresh(rMAP+rCOMBOS);
1404 return D_O_K;
1405 }
1406
1407 /****************************/
1408 /****** onCustomWpns ******/
1409 /****************************/
1410
1411 static DIALOG wpndata_dlg[] =
1412 {
1413 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp)
1414 { jwin_win_proc, 55, 40, 210, 163, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
1415 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
1416 { d_cstile_proc, 198, 84, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
1417 { jwin_button_proc, 90, 176, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
1418 { jwin_button_proc, 170, 176, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
1419 { jwin_check_proc, 198, 109, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Auto-flash", NULL, NULL },
1420 { jwin_check_proc, 198, 120, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "2P Flash", NULL, NULL },
1421 { jwin_check_proc, 198, 131, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "H-Flip", NULL, NULL },
1422 { jwin_check_proc, 198, 142, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "V-Flip", NULL, NULL },
1423 { jwin_text_proc, 61, 88, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Flash CSet:", NULL, NULL },
1424 //10
1425 { jwin_text_proc, 61, 106, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Frames:", NULL, NULL },
1426 { jwin_text_proc, 61, 124, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Speed:", NULL, NULL },
1427 { jwin_text_proc, 61, 142, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Miscellaneous Type:", NULL, NULL },
1428 { jwin_edit_proc, 160, 88, 35, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
1429 { jwin_edit_proc, 160, 106, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1430 { jwin_edit_proc, 160, 124, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1431 { jwin_edit_proc, 160, 142, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1432 { jwin_check_proc, 198, 153, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Behind", NULL, NULL },
1433 { jwin_edit_proc, 92, 65, 155, 16, vc(12), vc(1), 0, 0, 64, 0, NULL, NULL, NULL },
1434 { jwin_text_proc, 61, 69, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
1435 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
1436 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
1437 };
1438
1439
1440
1441 void edit_weapondata(int32_t index)
1442 {
1443 call_sprite_dlg(index); return;
1444 //OLD CODE
1445 /*
1446 char frm[8], spd[8], fcs[8], typ[8];
1447 char name[64];
1448 char wpnnumstr[75];
1449
1450 sprintf(wpnnumstr, "Sprite %d: %s", index, weapon_string[index]);
1451 wpndata_dlg[0].dp = wpnnumstr;
1452 wpndata_dlg[0].dp2 = get_zc_font(font_lfont);
1453 wpndata_dlg[2].d1 = wpnsbuf[index].tile;
1454 wpndata_dlg[2].d2 = wpnsbuf[index].csets&15;
1455
1456 for(int32_t i=0; i<4; i++)
1457 wpndata_dlg[i+5].flags = (wpnsbuf[index].misc&(1<<i)) ? D_SELECTED : 0;
1458
1459 wpndata_dlg[17].flags = (wpnsbuf[index].misc & WF_BEHIND) ? D_SELECTED : 0;
1460
1461 sprintf(fcs,"%d",wpnsbuf[index].csets>>4);
1462 sprintf(frm,"%d",wpnsbuf[index].frames);
1463 sprintf(spd,"%d",wpnsbuf[index].speed);
1464 sprintf(typ,"%d",wpnsbuf[index].type);
1465 wpndata_dlg[13].dp = fcs;
1466 wpndata_dlg[14].dp = frm;
1467 wpndata_dlg[15].dp = spd;
1468 wpndata_dlg[16].dp = typ;
1469 sprintf(name,"%s",weapon_string[index]);
1470 wpndata_dlg[18].dp = name;
1471
1472 large_dialog(wpndata_dlg);
1473
1474 int32_t ret;
1475 wpndata test;
1476
1477 do
1478 {
1479 ret = do_zqdialog(wpndata_dlg,3);
1480
1481 test.tile = wpndata_dlg[2].d1;
1482 test.csets = wpndata_dlg[2].d2;
1483
1484 test.misc = 0;
1485
1486 for(int32_t i=0; i<4; i++)
1487 if(wpndata_dlg[i+5].flags & D_SELECTED)
1488 test.misc |= 1<<i;
1489
1490 test.misc |= (wpndata_dlg[17].flags & D_SELECTED) ? WF_BEHIND : 0;
1491
1492 test.csets |= (atoi(fcs)&15)<<4;
1493 test.frames = atoi(frm);
1494 test.speed = atoi(spd);
1495 test.type = atoi(typ);
1496 test.script = 0; // Not used yet
1497 }
1498 while(ret==17);
1499
1500 if(ret==3)
1501 {
1502 strcpy(weapon_string[index],name);
1503 wpnsbuf[index] = test;
1504 saved = false;
1505 }*/
1506
1507 }
1508
1509 int32_t onCustomWpns()
1510 {
1511 /*
1512 char *hold = item_string[0];
1513 item_string[0] = "rupee (1)";
1514 */
1515
1516 build_biw_list();
1517
1518 int32_t index = select_weapon("Select Weapon",biw[0].i);
1519
1520 while(index >= 0)
1521 {
1522 edit_weapondata(index);
1523 index = select_weapon("Select Weapon",index);
1524 }
1525
1526 refresh(rMAP+rCOMBOS);
1527 return D_O_K;
1528 }
1529
1530 /****************************/
1531 /****** onMiscSprites ******/
1532 /****************************/
1533
1534 int32_t onMiscSprites()
1535 {
1536 MiscSprsDialog(QMisc.sprites, 20, [](int32_t* newsprs)
1537 {
1538 saved = false;
1539 for(auto q = 0; q < sprMAX; ++q)
1540 QMisc.sprites[q] = byte(newsprs[q]);
1541 }).show();
1542 return D_O_K;
1543 }
1544
1545 int32_t onMiscSFX()
1546 {
1547 MiscSFXDialog(QMisc.miscsfx, 20, [](int32_t* newsfx)
1548 {
1549 saved = false;
1550 for(auto q = 0; q < sfxMAX; ++q)
1551 QMisc.miscsfx[q] = byte(newsfx[q]);
1552 }).show();
1553 return D_O_K;
1554 }
1555
1556 /****************************/
1557 /***** onCustomEnemies *****/
1558 /****************************/
1559
1560
1561 static int32_t enedata_data_list[] =
1562 {
1563 //2,3,4 --moved to EOL as 247,248,249, to make room for tabs. -Z
1564 247,248,249,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
1565 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,138,139,140,141,143,-1
1566 };
1567
1568 static int32_t enedata_data2_list[] =
1569 {
1570 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,179,180,181,182,183,184,187,188,189,190, 288, 289, 296, 297,-1
1571 };
1572
1573 static int32_t enedata_data3_list[] =
1574 {
1575 // d_dummy_proc entries still must be somewhere on the editor.
1576 // They will be hidden, but if ther are not referenced, this causes objects
1577 // to refuse to click!
1578 // This was the cause of flags not clicking properly and Enemy Editor UI elements not responding to mouse input. -Z
1579 5,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,
1580 286,287,290,291,292,293,294,295,298,299,300,301,302,303,304,305,306,307,310,311,312,313,314,315,
1581 -1
1582 };
1583
1584 static int32_t enedata_data4_list[] =
1585 {
1586 308, 309, 316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,
1587 -1
1588 };
1589
1590 static int32_t enedata_flags_list[] =
1591 {
1592 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,98,99,100,101,102,103,104,105,106,120,121,-1
1593 };
1594
1595 static int32_t enedata_flags2_list[] =
1596 {
1597 90,91,92,93,94,95,96,97,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,-1
1598 };
1599
1600 static int32_t enedata_editorflags_list[]=
1601 {
1602 254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,
1603 -1
1604 };
1605
1606 static int32_t enedata_flags3_list[] =
1607 {
1608 107,108,109,110,111,112,113,114,115,116,117,118,119,185,186,399,-1
1609 }; //REMEMBER: If you undummy anything from 400-414, make sure to remove it from enedata_flags2_list! That list gets everything in it disabled.
1610
1611 static int32_t enedata_defense_list[] =
1612 {
1613 144,145,146,147,148,149,150,151,152,161,162,163,164,165,166,167,168,169,178,-1
1614 };
1615
1616 static int32_t enedata_defense2_list[] =
1617 {
1618 153,154,155,156,157,158,159,160,170,171,172,173,174,175,176,177,191,192,415,416,-1
1619 };
1620
1621 static int32_t enedata_defense3_list[] =
1622 {
1623 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1624 };
1625
1626 static int32_t enedata_spritesize_list[] =
1627 {
1628 213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,239,240,241,242,243,244,245,246,-1
1629 };
1630
1631 static int32_t enemy_defence_tabs_list[] =
1632 {
1633 2,-1
1634 };
1635
1636 static int32_t enemy_basic_tabs_list[] =
1637 {
1638 3,-1
1639 };
1640
1641 static int32_t enemy_flags_tabs_list[] =
1642 {
1643 4,-1
1644 };
1645
1646
1647 static int32_t enemy_attributes_tabs_list[] =
1648 {
1649 5,-1
1650 };
1651
1652 static int32_t enemy_graphics_tabs_list[] =
1653 {
1654 6,-1
1655 };
1656
1657 static int32_t enemy_movement_tabs_list[] =
1658 {
1659 250,-1
1660 };
1661
1662 static int32_t enemy_script_tabs_list[] =
1663 {
1664 251,-1
1665 };
1666
1667
1668 static int32_t enemy_scripts_list[] =
1669 {
1670
1671 334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,
1672 377,378,379,380,381,382,383,384,
1673 426,427,428,429,430,431,432,433,
1674 -1
1675 };
1676
1677 static int32_t enemy_weapon_scripts_list[] =
1678 {
1679 353,354,355,356,357,358,359,360,
1680 361,362,363,364,365,366,367,368,
1681 369,370,
1682 385,386,387,388,389,390,391,392,
1683 434,435,436,437,438,439,440,441,
1684 -1
1685 };
1686 static int32_t enemy_moveflag_list[] =
1687 {
1688 371, 372, 373, 374, 375, 417, 418, 419,
1689 420, 421, 422, 423, 424, 425,
1690 -1
1691 };
1692 static int32_t enemy_movement_list[] =
1693 {
1694 -1
1695 };
1696
1697 static int32_t enemy_gfx_sprites_list[] =
1698 {
1699 235,236,393,394,395,396,397,398,
1700 -1
1701 };
1702
1703
1704 static TABPANEL enemy_graphics_tabs[] =
1705 {
1706 { (char *)"Sprites", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1707 { NULL, 0, NULL, 0, NULL }
1708 };
1709
1710
1711
1712 /*
1713
1714
1715
1716 static int32_t enemy_sounds_tabs_list[] =
1717 {
1718 250,-1
1719 };
1720
1721
1722 static int32_t enemy_attacks_tabs_list[] =
1723 {
1724 5,-1
1725 };
1726
1727 static int32_t enemy_sfx_sounds_list[] =
1728 {
1729 -1
1730 };
1731
1732 static int32_t enemy_sfx_bgsounds_list[] =
1733 {
1734 -1
1735 };
1736
1737 static int32_t enemy_attacks_list[] =
1738 {
1739 -1
1740 };
1741 static int32_t enemy_attacks_Wmove_list[] =
1742 {
1743 -1
1744 };
1745
1746
1747
1748 */
1749
1750
1751
1752
1753
1754 /*
1755
1756 static TABPANEL enemy_sounds_tabs[] =
1757 {
1758 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1759 // { (char *)"Background Sounds", D_SELECTED, enemy_sfx_bgsounds_list, 0, NULL },
1760 { NULL, 0, NULL, 0, NULL }
1761 };
1762
1763
1764
1765 static TABPANEL enemy_attacks_tabs[] =
1766 {
1767 // { (char *)"Attacks", D_SELECTED, enemy_attacks_list, 0, NULL },
1768 // { (char *)"Weapon Movement", D_SELECTED, enemy_attacks_Wmove_list, 0, NULL },
1769 { NULL, 0, NULL, 0, NULL }
1770 };
1771
1772
1773 */
1774
1775
1776 static int32_t enedata_defense_ranged_list[] =
1777 {
1778 //ranged 1
1779 //brang, arrow, magic, fire, byrna, whistle
1780 144, 161, 147, 164, 150, 167, 148, 165, 160, 177, 191, 192,
1781 -1
1782 };
1783
1784
1785 //193 == text; 203 == lister
1786 static int32_t enedata_defense_script_list[] =
1787 {
1788 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1789 };
1790
1791 static int32_t enedata_defense_melee_list[] =
1792 {
1793 //melee
1794 //sword, bomb, sbomb, wand,
1795 153, 170, 145, 162, 146, 163, 149, 166,
1796 //hammer, boots, hookshot
1797 152, 169, 159, 176, 151, 168,
1798 //set all
1799 178,
1800 };
1801
1802 static int32_t enedata_defense_reflected_list[] =
1803 {
1804 //reflected
1805 //ref beam, ref magic, ref fireball, refl rock,
1806 155, 172, 156, 173, 157, 174, 158, 175,
1807 -1
1808 };
1809
1810 static TABPANEL enemy_movement_tabs[] =
1811 {
1812 { (char *)"Move Flags", D_SELECTED, enemy_moveflag_list, 0, NULL },
1813 { (char *)"Enemy Movement", 0, enemy_movement_list, 0, NULL },
1814 { NULL, 0, NULL, 0, NULL }
1815 };
1816
1817 static TABPANEL enemy_script_tabs[] =
1818 {
1819 { (char *)"Action Script", D_SELECTED, enemy_scripts_list, 0, NULL },
1820 { (char *)"Weapon Script", 0, enemy_weapon_scripts_list, 0, NULL },
1821 { NULL, 0, NULL, 0, NULL }
1822 };
1823
1824 static TABPANEL enemy_defence_tabs[] =
1825 {
1826
1827 { (char *)"Defs 1", D_SELECTED, enedata_defense_list, 0, NULL },
1828 { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1829 { (char *)"Script", 0, enedata_defense3_list, 0, NULL },
1830
1831 /*
1832 { (char *)"Melee", D_SELECTED, enedata_defense_melee_list, 0, NULL },
1833 { (char *)"Ranged", 0, enedata_defense_ranged_list, 0, NULL },
1834 { (char *)"Reflected", 0, enedata_defense_reflected_list, 0, NULL },
1835 { (char *)"Script", 0, enedata_defense_script_list, 0, NULL },
1836 */
1837 { NULL, 0, NULL, 0, NULL }
1838 };
1839
1840 static TABPANEL enemy_flags_tabs[] =
1841 {
1842 { (char *)"Basic Flags", D_SELECTED, enedata_flags_list, 0, NULL },
1843 { (char *)"Behaviour", 0, enedata_editorflags_list, 0, NULL },
1844 { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1845 { NULL, 0, NULL, 0, NULL }
1846 };
1847
1848 static TABPANEL enemy_basic_tabs[] =
1849 {
1850 { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1851 { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1852 { (char *)"Data 3", 0, enedata_data3_list, 0, NULL },
1853 { (char *)"Data 4", 0, enedata_data4_list, 0, NULL },
1854 { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1855 // { (char *)"Graphics", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1856 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1857 { NULL, 0, NULL, 0, NULL }
1858 };
1859
1860 static TABPANEL enedata_tabs[] =
1861 {
1862 // { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1863 // { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1864 { (char *)"Basic", D_SELECTED, enemy_basic_tabs_list, 0, NULL },
1865 // { (char *)"Misc. Flags", 0, enedata_flags_list, 0, NULL },
1866 // { (char *)"Flags 2", 0, enedata_flags2_list, 0, NULL },
1867 { (char *)"Defenses", 0, enemy_defence_tabs_list, 0, NULL },
1868 // { (char *)"Defs 1", 0, enedata_defense_list, 0, NULL },
1869 // { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1870 // { (char *)"Defs 3", 0, enedata_defense3_list, 0, NULL },
1871 { (char *)"Flags", 0, enemy_flags_tabs_list, 0, NULL },
1872 // { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1873 // { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1874 //Unimplemented at present. -Z
1875 { (char *)"Movement", 0, enemy_movement_tabs_list, 0, NULL },
1876 // { (char *)"Attacks", 0, enemy_attacks_tabs_list, 0, NULL },
1877 // { (char *)"Sound Effects", 0, enemy_sounds_tabs_list, 0, NULL },
1878 { (char *)"Graphics", 0, enemy_graphics_tabs_list, 0, NULL },
1879 { (char *)"Scripts", 0, enemy_script_tabs_list, 0, NULL },
1880 { NULL, 0, NULL, 0, NULL }
1881 };
1882
1883
1884 list_data_struct bief[eeMAX];
1885 int32_t bief_cnt=-1;
1886
1887 void build_bief_list()
1888 {
1889 int32_t start=bief_cnt=0;
1890
1891 for(int32_t i=start; i<eeMAX; i++)
1892 {
1893 //Load enemy names from the module
1894 //if(moduledata.enem_type_names[i][0]!='-')
1895 if (moduledata.enem_type_names[i][0]!=0)
1896 {
1897 if(moduledata.enem_type_names[i][0]!='-')
1898 {
1899 //load these from the module
1900 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1901 //bief[bief_cnt].s = (char *)enetype_string[i];
1902 bief[bief_cnt].s = (char *)moduledata.enem_type_names[i];
1903 bief[bief_cnt].i = i;
1904 ++bief_cnt;
1905 }
1906 }
1907 else //not set in the module file, so use the default
1908 {
1909 if(enetype_string[i][0]!='-')
1910 {
1911 //load these from the module
1912 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1913 //bief[bief_cnt].s = (char *)enetype_string[i];
1914 bief[bief_cnt].s = (char *)enetype_string[i];
1915 bief[bief_cnt].i = i;
1916 ++bief_cnt;
1917 }
1918
1919 }
1920
1921 }
1922
1923 // No alphabetic sorting for this list
1924 for(int32_t j=start+1; j<bief_cnt-1; j++)
1925 {
1926 if(!strcmp(bief[j].s,"(None)"))
1927 {
1928 for(int32_t i=j; i>0; i--)
1929 zc_swap(bief[i],bief[i-1]);
1930
1931 break;
1932 }
1933 }
1934 }
1935
1936 const char *enetypelist(int32_t index, int32_t *list_size)
1937 {
1938 if(index<0)
1939 {
1940 *list_size = bief_cnt;
1941 return NULL;
1942 }
1943
1944 return bief[index].s;
1945 }
1946
1947 list_data_struct biea[aMAX];
1948 int32_t biea_cnt=-1;
1949
1950 void build_biea_list()
1951 {
1952 int32_t start=biea_cnt=0;
1953
1954 for(int32_t i=start; i<aMAX; i++)
1955 {
1956
1957 if ( moduledata.enem_anim_type_names[1][0] != 0 )
1958 {
1959 if(eneanim_string[i][0]!='-')
1960 {
1961 biea[biea_cnt].s = (char *)moduledata.enem_anim_type_names[i];
1962 biea[biea_cnt].i = i;
1963 ++biea_cnt;
1964 }
1965 }
1966 else
1967 {
1968 if(eneanim_string[i][0]!='-')
1969 {
1970 biea[biea_cnt].s = (char *)eneanim_string[i];
1971 biea[biea_cnt].i = i;
1972 ++biea_cnt;
1973 }
1974 }
1975 }
1976
1977 for(int32_t i=start; i<biea_cnt-1; i++)
1978 for(int32_t j=i+1; j<biea_cnt; j++)
1979 if(stricmp(biea[i].s,biea[j].s)>0 && strcmp(biea[j].s,""))
1980 zc_swap(biea[i],biea[j]);
1981 }
1982
1983
1984 const char *eneanimlist(int32_t index, int32_t *list_size)
1985 {
1986 if(index<0)
1987 {
1988 *list_size = biea_cnt;
1989 return NULL;
1990 }
1991
1992 return biea[index].s;
1993 }
1994
1995 const char *itemsetlist(int32_t index, int32_t *list_size)
1996 {
1997 if(index>=0)
1998 {
1999 bound(index,0,count_item_drop_sets()-1);
2000 return item_drop_sets[index].name;
2001 // return itemset_string[index];
2002 }
2003
2004 *list_size=count_item_drop_sets();
2005 return NULL;
2006 }
2007
2008 list_data_struct biew[MAXWPNS];
2009 int32_t biew_cnt=-1;
2010
2011 char temp_custom_ew_strings[10][40];
2012
2013 static int32_t enemy_weapon_types[]=
2014 {
2015 128, ewFireball,ewArrow,ewBrang,ewSword,
2016 ewRock,ewMagic,ewBomb,ewSBomb,
2017 //137
2018 ewLitBomb,ewLitSBomb,ewFireTrail,ewFlame,
2019 ewWind,ewFlame2,ewFlame2Trail,
2020 //145
2021 ewIce,ewFireball2
2022
2023 };
2024
2025 static int32_t enemy_script_weapon_types[]=
2026 {
2027 wScript1, wScript2, wScript3, wScript4,
2028 //35
2029 wScript5, wScript6, wScript7, wScript8,
2030 //39
2031 wScript9, wScript10
2032
2033 };
2034
2035 void build_biew_list()
2036 {
2037 biew_cnt=0;
2038
2039 memset(temp_custom_ew_strings, 0, sizeof(temp_custom_ew_strings));
2040
2041 for(int32_t i=0; i<wMax-wEnemyWeapons; i++)
2042 {
2043 //if(eweapon_string[i][0]!='-')
2044 if(moduledata.enemy_weapon_names[i][0]!='-')
2045 {
2046 //biew[biew_cnt].s = (char *)eweapon_string[i];
2047 biew[biew_cnt].s = (char *)moduledata.enemy_weapon_names[i];
2048 biew[biew_cnt].i = enemy_weapon_types[i];
2049 ++biew_cnt;
2050 }
2051 }
2052 for(int32_t i = 0; i < 10; i++)
2053 {
2054 biew[biew_cnt].s = (char *)moduledata.enemy_scriptweaponweapon_names[i];
2055 biew[biew_cnt].i = enemy_script_weapon_types[i];
2056 ++biew_cnt;
2057 }
2058 al_trace("biew_cnt is: %d\n", biew_cnt);
2059 for ( int32_t i = 0; i < biew_cnt; i++ )
2060 {
2061 al_trace("biew[%d] id is (%d) and string is (%s)\n", i, biew[i].i, biew[i].s);
2062
2063 }
2064
2065 }
2066
2067 const char *eweaponlist(int32_t index, int32_t *list_size)
2068 {
2069 if(biew_cnt==-1)
2070 build_biew_list();
2071
2072 if(index>=0)
2073 {
2074 bound(index,0,biew_cnt-1);
2075 return biew[index].s;
2076 }
2077
2078 *list_size=biew_cnt;
2079 return NULL;
2080 }
2081
2082
2083 //
2084 // Enemy Misc. Attribute label swapping device
2085 //
2086 struct EnemyNameInfo
2087 {
2088 int32_t family;
2089 char const* misc[10];
2090 void* list[32];
2091 char *flags[16];
2092 char *attributes[32];
2093
2094 };
2095
2096 const char *walkmisc1list(int32_t index, int32_t *list_size)
2097 {
2098 if(index>=0)
2099 {
2100 bound(index,0,e1tLAST-1);
2101 return walkmisc1_string[index];
2102 }
2103
2104 *list_size = e1tLAST;
2105 return NULL;
2106 }
2107
2108 const char *walkmisc2list(int32_t index, int32_t *list_size)
2109 {
2110 if(index>=0)
2111 {
2112 bound(index,0,e2tTRIBBLE);
2113 return walkmisc2_string[index];
2114 }
2115
2116 *list_size = e2tTRIBBLE+1;
2117 return NULL;
2118 }
2119
2120 const char *walkmisc7list(int32_t index, int32_t *list_size)
2121 {
2122 if(index>=0)
2123 {
2124 bound(index,0,e7tEATHURT);
2125 return walkmisc7_string[index];
2126 }
2127
2128 *list_size = e7tEATHURT+1;
2129 return NULL;
2130 }
2131
2132 const char *walkmisc9list(int32_t index, int32_t *list_size)
2133 {
2134 if(index>=0)
2135 {
2136 bound(index,0,e9tARMOS);
2137 //return walkmisc9_string[index];
2138 return (char *)moduledata.walkmisc9_names[index];
2139 }
2140
2141 *list_size = e9tARMOS+1;
2142 return NULL;
2143 }
2144
2145 const char *gleeokmisc3list(int32_t index, int32_t *list_size)
2146 {
2147 if(index>=0)
2148 {
2149 return (index ? "Breath" : "1 Shot");
2150 }
2151
2152 *list_size = 2;
2153 return NULL;
2154 }
2155
2156 const char *gohmamisc1list(int32_t index, int32_t *list_size)
2157 {
2158 if(index>=0)
2159 {
2160 return (index==2 ? "Breath" : index==1 ? "3 Shots" : "1 Shot");
2161 }
2162
2163 *list_size = 3;
2164 return NULL;
2165 }
2166
2167 const char *manhandlamisc2list(int32_t index, int32_t *list_size)
2168 {
2169 if(index>=0)
2170 {
2171 return (index ? "2x2 (8 Heads)" : "1x1 (4 Heads)");
2172 }
2173
2174 *list_size = 2;
2175 return NULL;
2176 }
2177
2178 const char *aquamisc1list(int32_t index, int32_t *list_size)
2179 {
2180 if(index>=0)
2181 {
2182 return (index ? "Left (Facing Right)" : "Right (Facing Left)");
2183 }
2184
2185 *list_size = 2;
2186 return NULL;
2187 }
2188
2189 const char *patramisc4list(int32_t index, int32_t *list_size)
2190 {
2191 if(index>=0)
2192 {
2193 return (index ? "Oval" : "Big Circle");
2194 }
2195
2196 *list_size = 2;
2197 return NULL;
2198 }
2199
2200 const char *patramisc5list(int32_t index, int32_t *list_size)
2201 {
2202 if(index>=0)
2203 {
2204 return (index==3 ? "Inner + Center" : index==2 ? "Inner Eyes" : index==1 ? "Center Eye" : "None");
2205 }
2206
2207 *list_size = 4;
2208 return NULL;
2209 }
2210
2211 const char *patramisc10list(int32_t index, int32_t *list_size)
2212 {
2213 if(index>=0)
2214 {
2215 return (index ? "2x2 Patra" : "1x1 Patra");
2216 }
2217
2218 *list_size = 2;
2219 return NULL;
2220 }
2221
2222 const char *patramisc20list(int32_t index, int32_t *list_size)
2223 {
2224 if(index>=0)
2225 {
2226 switch(index)
2227 {
2228 case 4:
2229 return "Stream";
2230 case 3:
2231 return "Ring";
2232 case 2:
2233 return "Barrage";
2234 case 1:
2235 return "Random (Single)";
2236 default:
2237 return "Random (Any)";
2238 }
2239 }
2240
2241 *list_size = 5;
2242 return NULL;
2243 }
2244
2245 const char *patramisc22list(int32_t index, int32_t *list_size)
2246 {
2247 if(index>=0)
2248 {
2249 switch(index)
2250 {
2251 case 2:
2252 return "Expand + Warning";
2253 case 1:
2254 return "When Expanding";
2255 default:
2256 return "Never";
2257 }
2258 }
2259
2260 *list_size = 3;
2261 return NULL;
2262 }
2263
2264 const char *patramisc25list(int32_t index, int32_t *list_size)
2265 {
2266 if(index>=0)
2267 {
2268 switch(index)
2269 {
2270 case 3:
2271 return "When behind 1 layer";
2272 case 2:
2273 return "When Invulnerable";
2274 case 1:
2275 return "When Vulnerable";
2276 default:
2277 return "Always";
2278 }
2279 }
2280
2281 *list_size = 4;
2282 return NULL;
2283 }
2284
2285 const char *patramisc26list(int32_t index, int32_t *list_size)
2286 {
2287 if(index>=0)
2288 {
2289 switch(index)
2290 {
2291 case 2:
2292 return "Without Outer Ring";
2293 case 1:
2294 return "With Outer Ring";
2295 default:
2296 return "Always";
2297 }
2298 }
2299
2300 *list_size = 3;
2301 return NULL;
2302 }
2303
2304 const char *patramisc28list(int32_t index, int32_t *list_size)
2305 {
2306 if(index>=0)
2307 {
2308 bound(index,0,patratLAST-1);
2309 return patramisc28_string[index];
2310 }
2311
2312 *list_size = patratLAST;
2313 return NULL;
2314 }
2315
2316 const char *dodongomisc10list(int32_t index, int32_t *list_size)
2317 {
2318 if(index>=0)
2319 {
2320 return (index ? "BS-Zelda" : "NES");
2321 }
2322
2323 *list_size = 2;
2324 return NULL;
2325 }
2326
2327 const char *digdoggermisc10list(int32_t index, int32_t *list_size)
2328 {
2329 if(index>=0)
2330 {
2331 return (index ? "Kid" : "Digdogger");
2332 }
2333
2334 *list_size = 2;
2335 return NULL;
2336 }
2337
2338 const char *walkerspawnlist(int32_t index, int32_t *list_size)
2339 {
2340 if(index>=0)
2341 {
2342 return (index==2 ? "Instant" : index==1 ? "Flicker" : "Puff");
2343 }
2344
2345 *list_size = 3;
2346 return NULL;
2347 }
2348
2349 const char *wizzrobemisc1list(int32_t index, int32_t *list_size)
2350 {
2351 if(index>=0)
2352 {
2353 return (index ? "Phase" : "Teleport");
2354 }
2355
2356 *list_size = 2;
2357 return NULL;
2358 }
2359
2360 const char *wizzrobemisc2list(int32_t index, int32_t *list_size)
2361 {
2362 if(index>=0)
2363 {
2364 return (index==3 ? "Summon (Layer)" : index==2 ? "Summon" : index==1 ? "8 Shots" : "1 Shot");
2365 }
2366
2367 *list_size = 4;
2368 return NULL;
2369 }
2370
2371 const char *keesemisc1list(int32_t index, int32_t *list_size)
2372 {
2373 if(index>=0)
2374 {
2375 return (index > 1 ? "Keese (Fast)" : index > 0 ? "Bat" : "Keese");
2376 }
2377
2378 *list_size = 3;
2379 return NULL;
2380 }
2381
2382 const char *keesemisc2list(int32_t index, int32_t *list_size)
2383 {
2384 if(index>=0)
2385 {
2386 return (index ? "Tribble" : "Normal");
2387 }
2388
2389 *list_size = 2;
2390 return NULL;
2391 }
2392
2393 const char *trapmisc2list(int32_t index, int32_t *list_size)
2394 {
2395 if(index>=0)
2396 {
2397 return (index ? "Constant" : "Line Of Sight");
2398 }
2399
2400 *list_size = 2;
2401 return NULL;
2402 }
2403
2404 const char *trapmisc1list(int32_t index, int32_t *list_size)
2405 {
2406 if(index>=0)
2407 {
2408 return (index==2 ? "Vertical" : index==1 ? "Horizontal" : "4-Way");
2409 }
2410
2411 *list_size = 3;
2412 return NULL;
2413 }
2414
2415 const char *leevermisc1list(int32_t index, int32_t *list_size)
2416 {
2417 if(index>=0)
2418 {
2419 if(index==0)
2420 return "Player's path";
2421 else if(index==1)
2422 return "In place";
2423 else if(index==2)
2424 return "Player's path + second";
2425 }
2426
2427 *list_size = 3;
2428 return NULL;
2429 }
2430
2431 const char *rockmisc1list(int32_t index, int32_t *list_size)
2432 {
2433 if(index>=0)
2434 {
2435 return (index ? "2x2" : "1x1");
2436 }
2437
2438 *list_size = 2;
2439 return NULL;
2440 }
2441
2442 // 0: no, 1: yes
2443 const char *yesnomisclist(int32_t index, int32_t *list_size)
2444 {
2445 if(index>=0)
2446 {
2447 return (index ? "Yes" : "No");
2448 }
2449
2450 *list_size = 2;
2451 return NULL;
2452 }
2453
2454 // 0: yes, 1: no
2455 const char *noyesmisclist(int32_t index, int32_t *list_size)
2456 {
2457 if(index>=0)
2458 {
2459 return (index ? "No" : "Yes");
2460 }
2461
2462 *list_size = 2;
2463 return NULL;
2464 }
2465
2466 9 static ListData walkmisc1_list(walkmisc1list, &a4fonts[font_lfont_l]);
2467 9 static ListData walkmisc2_list(walkmisc2list, &a4fonts[font_lfont_l]);
2468 9 static ListData walkmisc7_list(walkmisc7list, &a4fonts[font_lfont_l]);
2469 9 static ListData walkmisc9_list(walkmisc9list, &a4fonts[font_lfont_l]);
2470
2471 9 static ListData gleeokmisc3_list(gleeokmisc3list, &a4fonts[font_lfont_l]);
2472 9 static ListData gohmamisc1_list(gohmamisc1list, &a4fonts[font_lfont_l]);
2473 9 static ListData manhandlamisc2_list(manhandlamisc2list, &a4fonts[font_lfont_l]);
2474 9 static ListData aquamisc1_list(aquamisc1list, &a4fonts[font_lfont_l]);
2475
2476 9 static ListData patramisc4_list(patramisc4list, &a4fonts[font_lfont_l]);
2477 9 static ListData patramisc5_list(patramisc5list, &a4fonts[font_lfont_l]);
2478 9 static ListData patramisc10_list(patramisc10list, &a4fonts[font_lfont_l]);
2479 9 static ListData patramisc20_list(patramisc20list, &a4fonts[font_lfont_l]);
2480 9 static ListData patramisc22_list(patramisc22list, &a4fonts[font_lfont_l]);
2481 9 static ListData patramisc25_list(patramisc25list, &a4fonts[font_lfont_l]);
2482 9 static ListData patramisc26_list(patramisc26list, &a4fonts[font_lfont_l]);
2483 9 static ListData patramisc28_list(patramisc28list, &a4fonts[font_lfont_l]);
2484
2485 9 static ListData dodongomisc10_list(dodongomisc10list, &a4fonts[font_lfont_l]);
2486
2487 9 static ListData keesemisc1_list(keesemisc1list, &a4fonts[font_lfont_l]);
2488 9 static ListData keesemisc2_list(keesemisc2list, &a4fonts[font_lfont_l]);
2489
2490 9 static ListData digdoggermisc10_list(digdoggermisc10list, &a4fonts[font_lfont_l]);
2491
2492 9 static ListData wizzrobemisc1_list(wizzrobemisc1list, &a4fonts[font_lfont_l]);
2493 9 static ListData wizzrobemisc2_list(wizzrobemisc2list, &a4fonts[font_lfont_l]);
2494
2495 9 static ListData trapmisc1_list(trapmisc1list, &a4fonts[font_lfont_l]);
2496 9 static ListData trapmisc2_list(trapmisc2list, &a4fonts[font_lfont_l]);
2497
2498 9 static ListData leevermisc1_list(leevermisc1list, &a4fonts[font_lfont_l]);
2499 9 static ListData rockmisc1_list(rockmisc1list, &a4fonts[font_lfont_l]);
2500
2501 9 static ListData yesnomisc_list(yesnomisclist, &a4fonts[font_lfont_l]);
2502 9 static ListData noyesmisc_list(noyesmisclist, &a4fonts[font_lfont_l]);
2503
2504 static EnemyNameInfo enameinf[]=
2505 {
2506 {
2507 //"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility"
2508 eeWALK, { "Shot Type:", "Death Type:", "Death Attr. 1:", "Death Attr. 2:", "Death Attr. 3:", "Extra Shots:", "Touch Effects:", "Effect Strength:", "Walk Style:", "Walk Attr.:" },
2509 { (void*)&walkmisc1_list, (void*)&walkmisc2_list, NULL, NULL, NULL, NULL, (void*)&walkmisc7_list, NULL, (void*)&walkmisc9_list, NULL, //10
2510 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2512 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",
2513 (char *)"Draw Invisible as Cloaked",(char *)"Split in Place",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",
2514 (char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2515 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2516 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2517 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2518 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2519 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2520 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2521 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2522 }
2523 },
2524 {
2525 eeGLEEOK, { "Heads:", "Head HP:", "Shot Type:", NULL, "Neck Segments:", "Neck Offset 1:", "Neck Offset 2:", "Head Offset:", "Fly Head Offset:", NULL },
2526 { NULL, NULL, (void*)&gleeokmisc3_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2528 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2529 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Center Spawn X Point",(char *)"Heads Block Projectiles",
2530 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2531 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2532 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2533 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2534 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2535 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2536 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2537 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2538 }
2539 },
2540 {
2541 eeDIG, { "Enemy 1 ID:", "Enemy 2 ID:", "Enemy 3 ID:", "Enemy 4 ID:", "Enemy 1 Qty:", "Enemy 2 Qty:", "Enemy 3 Qty:", "Enemy 4 Qty:", "Unused:", "Type:" },
2542 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&digdoggermisc10_list, //10
2543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2544 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2545 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2546 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2547 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2548 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2549 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2550 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2551 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2552 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2553 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2554 }
2555 },
2556 {
2557 eePATRA, { "Outer Eyes:", "Inner Eyes:", "Eyes' HP:", "Eye Movement:", "Shooters:", "Pattern Odds:", "Pattern Cycles:", "Eye Offset:", "Eye CSet:", "Type:" },
2558 { NULL, NULL, NULL, (void*)&patramisc4_list, (void*)&patramisc5_list, NULL, NULL, NULL, NULL, (void*)&patramisc10_list, //10
2559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&patramisc20_list, NULL, //21
2560 (void*)&patramisc22_list, NULL, NULL, (void*)&patramisc25_list, (void*)&patramisc26_list, NULL, (void*)&patramisc28_list, NULL, NULL, NULL, NULL}, //32
2561 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Has Firing Animation",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Slow down when Firing",(char *)"Don't attack when expanding",
2562 (char *)"Don't expand when spawned",(char *)"Pattern Odds reset when Expanding",(char *)"Don't 'expand' without orbiters",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2563 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2564 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2565 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2566 (char *)"Transformation Inv Time:",(char *)"Shot chance (1/N per frame):",(char *)"Firing cooldown:",(char *)"Inner Eyes Firing Pattern:",
2567 (char *)"Warning Spins:",(char *)"Stays still:",(char *)"Outer Ring Loss Speed Boost:",(char *)"Inner Ring Loss Speed Boost:",
2568 (char *)"Can Fire:",(char *)"Can Expand:",(char *)"Inner Eye HP:",(char *)"Center Eye Firing Pattern:",
2569 (char *)"Outer Eye Radius:",(char *)"Inner Eye Radius:",(char *)"Outer Eye Expand Radius:",(char *)"Inner Eye Expand Radius:",
2570 }
2571 },
2572 {
2573 eePROJECTILE, { "Shot Type:", NULL, "Shot Attr. 1:", "Shot Attr. 2:", NULL, NULL, NULL, NULL, NULL, NULL },
2574 { (void*)&walkmisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2575 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2576 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2577 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2578 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2579 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2580 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2581 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2582 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2583 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2584 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2585 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2586 }
2587 },
2588 {
2589 eeGHOMA, { "Shot Type:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2590 { (void*)&gohmamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2591 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2592 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2593 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2594 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2595 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2596 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2597 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2598 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2599 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2600 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2601 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2602 }
2603 },
2604 {
2605 eeAQUA, { "Side:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2606 { (void*)&aquamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2607 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2609 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2610 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2611 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2612 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2613 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2614 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2615 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2616 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2617 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2618 }
2619 },
2620 {
2621 eeMANHAN, { "Frame rate:", "Size:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2622 { NULL, (void*)&manhandlamisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2623 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2624 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2625 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2626 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2627 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2628 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2629 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2630 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2631 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2632 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2633 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2634 }
2635 },
2636 {
2637 eeLANM, { "Segments:", "Segment Lag:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2638 { NULL, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2641 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",
2642 (char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2643 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2644 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2645 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2646 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2647 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2648 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2649 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2650 }
2651 },
2652 {
2653 eeMOLD, { "Segments:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2654 { NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2657 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2658 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2659 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2660 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2661 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2662 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2663 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2664 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2665 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2666 }
2667 },
2668 {
2669 eeWIZZ, { "Walk Style:", "Shot Type:", "Shot Attr. 1:", "Solid Combos OK:", "Teleport Delay:", NULL, NULL, NULL, NULL, NULL },
2670 { (void*)&wizzrobemisc1_list, (void*)&wizzrobemisc2_list, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, //10
2671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2673 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Old Windrobe teleport",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2674 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2675 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2676 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2677 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2678 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2679 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2680 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2681 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2682 }
2683 },
2684 {
2685 eeDONGO,{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Type :" },
2686 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&dodongomisc10_list, //10
2687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2689 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2690 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2691 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2692 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2693 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2694 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2695 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2696 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2697 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2698 }
2699 },
2700 {
2701 eeKEESE, { "Walk Style:", "Death Type:", "Enemy ID:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2702 { (void*)&keesemisc1_list, (void*)&keesemisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2705 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2706 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2707 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2708 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2709 (char *)"This Item Dispels Invisibility:",(char *)"Landing Chance (1/N):",(char *)"Landing Cooldown:",(char *)"Halt Duration",
2710 (char *)"Acceleration Frame Interval:",(char *)"Acceleration Step Modifier:",(char *)"Spawn Step:",(char *)"Tribble Timer:",
2711 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2712 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2713 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2714 }
2715 },
2716 {
2717 eeTEK, { "1/n jump start:", "1/n jump cont.:", "Jump Z velocity:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2718 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2721 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2722 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2723 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2724 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2725 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2726 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2727 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2728 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2729 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2730 }
2731 },
2732 {
2733 eeLEV, { "Emerge style:", "Submerged CSet:", "Emerging step:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2734 { (void*)&leevermisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2737 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2738 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2739 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2740 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2741 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2742 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2743 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2744 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2745 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2746 }
2747 },
2748 {
2749 eeWALLM,{ "Fixed distance:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2750 { (void*)&noyesmisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2753 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2754 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2755 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2756 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2757 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2758 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2759 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2760 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2761 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2762 }
2763 },
2764 {
2765 eeTRAP, { "Direction:", "Move Style:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2766 { (void*)&trapmisc1_list, (void*)&trapmisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2769 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2770 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2771 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2772 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2773 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2774 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2775 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2776 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2777 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2778 }
2779 },
2780 {
2781 eeROCK, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Rock size:" },
2782 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&rockmisc1_list, //10
2783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2785 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2786 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2787 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2788 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2789 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2790 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2791 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2792 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2793 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2794 }
2795 },
2796 {
2797 eeNONE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Boss Death Trigger:" },
2798 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&yesnomisc_list, //10
2799 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2800 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2801 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2802 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2803 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2804 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2805 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2806 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2807 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2808 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2809 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2810 }
2811 },
2812 {
2813 eeGHINI, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2814 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2815 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2817 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2818 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2819 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2820 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2821 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2822 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2823 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2824 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2825 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2826 }
2827 },
2828 {
2829 eePEAHAT, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2830 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2833 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2834 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2835 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2836 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2837 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2838 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2839 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2840 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2841 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2842 }
2843 },
2844 {
2845 eeZORA, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2846 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2847 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2848 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2849 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Lava Only",(char *)"Lava and Water",(char *)"Shallow Water",
2850 (char *)"Doesn't regenerate health",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2851 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2852 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2853 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2854 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2855 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2856 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2857 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2858 }
2859 },
2860 {
2861 eeSPINTILE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2862 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2863 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2864 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2865 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2866 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2867 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2868 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2869 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2870 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2871 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2872 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2873 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2874 }
2875 },
2876 {
2877 eeFIRE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2878 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2879 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2880 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2881 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2882 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2883 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2884 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2885 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2886 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2887 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2888 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2889 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2890 }
2891 },
2892 {
2893 eeOTHER, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2894 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2895 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2896 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2897 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2898 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2899 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2900 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2901 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2902 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2903 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2904 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2905 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2906 }
2907 },
2908 {
2909 eeSCRIPT01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2910 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2911 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2912 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2913 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2914 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2915 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2916 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2917 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2918 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2919 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2920 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2921 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2922 }
2923 },
2924 {
2925 eeSCRIPT02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2926 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2927 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2928 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2929 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2930 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2931 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2932 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2933 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2934 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2935 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2936 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2937 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2938 }
2939 },
2940 {
2941 eeSCRIPT03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2942 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2943 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2944 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2945 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2946 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2947 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2948 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2949 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2950 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2951 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2952 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2953 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2954 }
2955 },
2956 {
2957 eeSCRIPT04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2958 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2959 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2960 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2961 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2962 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2963 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2964 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2965 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2966 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2967 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2968 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2969 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2970 }
2971 },
2972 {
2973 eeSCRIPT05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2974 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2975 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2976 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2977 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2978 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2979 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2980 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2981 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2982 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2983 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2984 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2985 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2986 }
2987 },
2988 {
2989 eeSCRIPT06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2990 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2991 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2992 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2993 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2994 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2995 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2996 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2997 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2998 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2999 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3000 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3001 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3002 }
3003 },
3004 {
3005 eeSCRIPT07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3006 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3007 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3008 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3009 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3010 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3011 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3012 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3013 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3014 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3015 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3016 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3017 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3018 }
3019 },
3020 {
3021 eeSCRIPT08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3022 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3023 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3024 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3025 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3026 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3027 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3028 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3029 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3030 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3031 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3032 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3033 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3034 }
3035 },
3036 {
3037 eeSCRIPT09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3038 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3039 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3040 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3041 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3042 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3043 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3044 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3045 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3046 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3047 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3048 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3049 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3050 }
3051 },
3052 {
3053 eeSCRIPT10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3054 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3055 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3056 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3057 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3058 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3059 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3060 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3061 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3062 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3063 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3064 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3065 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3066 }
3067 },
3068 {
3069 eeSCRIPT11, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3070 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3071 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3072 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3073 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3074 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3075 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3076 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3077 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3078 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3079 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3080 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3081 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3082 }
3083 },
3084 {
3085 eeSCRIPT12, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3086 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3087 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3088 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3089 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3090 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3091 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3092 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3093 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3094 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3095 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3096 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3097 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3098 }
3099 },
3100 {
3101 eeSCRIPT13, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3102 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3104 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3105 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3106 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3107 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3108 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3109 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3110 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3111 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3112 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3113 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3114 }
3115 },
3116 {
3117 eeSCRIPT14, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3118 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3121 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3122 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3123 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3124 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3125 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3126 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3127 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3128 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3129 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3130 }
3131 },
3132 {
3133 eeSCRIPT15, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3134 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3136 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3137 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3138 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3139 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3140 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3141 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3142 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3143 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3144 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3145 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3146 }
3147 },
3148 {
3149 eeSCRIPT16, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3150 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3151 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3152 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3153 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3154 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3155 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3156 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3157 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3158 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3159 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3160 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3161 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3162 }
3163 },
3164 {
3165 eeSCRIPT17, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3166 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3167 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3169 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3170 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3171 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3172 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3173 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3174 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3175 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3176 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3177 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3178 }
3179 },
3180 {
3181 eeSCRIPT18, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3182 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3183 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3185 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3186 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3187 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3188 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3189 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3190 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3191 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3192 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3193 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3194 }
3195 },
3196 {
3197 eeSCRIPT19, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3198 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3201 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3202 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3203 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3204 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3205 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3206 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3207 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3208 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3209 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3210 }
3211 },
3212 {
3213 eeSCRIPT20, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3214 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3217 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3218 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3219 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3220 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3221 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3222 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3223 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3224 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3225 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3226 }
3227 },
3228 {
3229 eeFFRIENDLY01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3230 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3231 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3232 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3233 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3234 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3235 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3236 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3237 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3238 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3239 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3240 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3241 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3242 }
3243 },
3244 {
3245 eeFFRIENDLY02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3246 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3247 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3248 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3249 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3250 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3251 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3252 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3253 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3254 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3255 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3256 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3257 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3258 }
3259 },
3260 {
3261 eeFFRIENDLY03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3262 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3263 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3264 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3265 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3266 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3267 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3268 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3269 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3270 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3271 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3272 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3273 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3274 }
3275 },
3276 {
3277 eeFFRIENDLY04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3278 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3280 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3281 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3282 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3283 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3284 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3285 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3286 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3287 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3288 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3289 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3290 }
3291 },
3292 {
3293 eeFFRIENDLY05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3294 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3296 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3297 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3298 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3299 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3300 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3301 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3302 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3303 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3304 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3305 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3306 }
3307 },
3308 {
3309 eeFFRIENDLY06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3310 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3313 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3314 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3315 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3316 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3317 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3318 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3319 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3320 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3321 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3322 }
3323 },
3324 {
3325 eeFFRIENDLY07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3326 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3329 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3330 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3331 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3332 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3333 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3334 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3335 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3336 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3337 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3338 }
3339 },
3340 {
3341 eeFFRIENDLY08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3342 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3345 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3346 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3347 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3348 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3349 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3350 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3351 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3352 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3353 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3354 }
3355 },
3356 {
3357 eeFFRIENDLY09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3358 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3361 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3362 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3363 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3364 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3365 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3366 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3367 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3368 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3369 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3370 }
3371 },
3372 {
3373 eeFFRIENDLY10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3374 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3377 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3378 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3379 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3380 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3381 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3382 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3383 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3384 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3385 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3386 }
3387 },
3388 {
3389 eeGUY, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3390 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3391 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3393 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3394 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3395 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3396 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3397 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3398 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3399 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3400 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3401 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3402 }
3403 },
3404 {
3405 eeGANON, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
3406 , NULL, NULL },
3407 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3410 { (char *)"Visible if the player has an Level 2 (or higher) Amulet item.",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Uses Full Hitbox",(char *)"BFlags[3]:",
3411 (char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",
3412 (char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",(char *)"Use Editor ",(char *)"When Not Invisible, Also Show Weapon Shots.",(char *)"Draw Cloaked When Not Invisible" },
3413 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3414 (char *)"This Item Dispels Invisibility:",(char *)"Death Shot Item ID",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3415 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3416 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3417 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3418 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3419 }
3420 },
3421 {
3422 -1, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3423 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3424 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3425 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3426 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3427 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3428 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3429 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3430 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3431 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3432 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3433 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3434 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3435 }
3436 }
3437 };
3438
3439 static std::map<int32_t, EnemyNameInfo *> *enamemap = NULL;
3440
3441 std::map<int32_t, EnemyNameInfo *> *getEnemyNameMap()
3442 {
3443 if(enamemap == NULL)
3444 {
3445 enamemap = new std::map<int32_t, EnemyNameInfo *>();
3446
3447 for(int32_t i=0;; i++)
3448 {
3449 EnemyNameInfo *inf = &enameinf[i];
3450
3451 if(inf->family == -1)
3452 break;
3453
3454 (*enamemap)[inf->family] = inf;
3455 }
3456 }
3457
3458 return enamemap;
3459 }
3460
3461 const char *npcscriptdroplist(int32_t index, int32_t *list_size)
3462 {
3463 if(index<0)
3464 {
3465 *list_size = binpcs_cnt;
3466 return NULL;
3467 }
3468
3469 return binpcs[index].first.c_str();
3470 }
3471 9 ListData npcscript_list(npcscriptdroplist, &font);
3472
3473 9 static ListData itemset_list(itemsetlist, &font);
3474 9 static ListData eneanim_list(eneanimlist, &font);
3475 9 static ListData enetype_list(enetypelist, &font);
3476 9 static ListData eweapon_list(eweaponlist, &font);
3477
3478
3479 const char *eweaponscriptdroplist(int32_t index, int32_t *list_size)
3480 {
3481 if(index<0)
3482 {
3483 *list_size = bieweapons_cnt;
3484 return NULL;
3485 }
3486
3487 return bieweapons[index].first.c_str();
3488 }
3489
3490
3491 //droplist like the dialog proc, naming scheme for this stuff is awful...
3492 9 ListData eweaponscript_list(eweaponscriptdroplist, &a4fonts[font_pfont]);
3493
3494
3495 9 static ListData walkerspawn_list(walkerspawnlist, &font);
3496
3497 9 static ListData sfx__list(sfxlist, &font);
3498
3499 /*
3500 static DIALOG enedata_dlg[] =
3501 {
3502 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3503 { jwin_tab_proc, 4, 24, 312, 192, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3504 //2
3505 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3506 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3507 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3508 //5
3509 { jwin_button_proc, 50, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3510 { jwin_button_proc, 130, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3511 //7
3512 { jwin_text_proc, 21, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3513 { jwin_text_proc, 44, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3514 { jwin_text_proc, 90, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3515 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3516 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3517 //12
3518 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3519 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3520 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3521 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3522 //16
3523 { jwin_text_proc, 114, 54, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3524 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3525 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3526 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3527 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3528 //21
3529 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3530 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3531 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3532 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3533 //25
3534 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3535 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3536 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3537 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3538 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3539 //30
3540 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3541 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3542 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3543 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3544 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3545 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3546 //36
3547 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3548 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3549 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3550 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3551 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 1, 0, NULL, NULL, NULL },
3552 //41
3553 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3554 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3555 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3556 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3557 //45
3558 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3559 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3560 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3561 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3562 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3563 //50
3564 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3565 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3566 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3567 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3568 //54
3569 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3570 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3571 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3572 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3573 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3574 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3575 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3576 { jwin_text_proc, 160, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3577 { jwin_text_proc, 160, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3578 { jwin_text_proc, 160, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3579 //64
3580 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3581 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3582 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3583 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3584 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3585 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3586 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3587 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3588 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3589 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3590 //74
3591 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3592 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Invisible", NULL, NULL },
3593 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3594 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3595 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3596 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3597 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3598 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3599 //82
3600 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3601 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3602 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3603 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3604 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3605 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3606 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3607 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3608 //90
3609 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3610 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3611 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3612 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3613 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3614 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3615 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3616 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3617 //98
3618 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3619 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3620 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3621 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3622 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3623 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3624 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3625 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3626 //106
3627 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3628 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3629 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3630 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3631 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3632 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3633 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3634 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3635 //114
3636 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3637 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3638 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3639 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3640 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3641 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3642 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3643 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3644 //122
3645 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3646 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3647 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3648 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3649 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3650 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3651 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3652 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3653 //130
3654 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3655 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3656 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3657 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3658 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3659 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3660 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3661 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3662 //138
3663 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3664 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3665 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3666 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3667 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3668 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3669 //143 - note: these are defenses 0-16, 17 is at 191
3670 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3671 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3672 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3673 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3674 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3675 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3676 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3677 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3678 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3679 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3680 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3681 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3682 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3683 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3684 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3685 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3686 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3687 //161
3688 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3689 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3690 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3691 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3692 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3693 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3694 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3695 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3696 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3697 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3698 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3699 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3700 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3701 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3702 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3703 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3704 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3705 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3706 //179
3707 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3708 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3709 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3710 //182
3711 { jwin_droplist_proc, 86, 158, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3712 { jwin_droplist_proc, 86, 176, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3713 { jwin_droplist_proc, 86, 194, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3714 { jwin_text_proc, 6, 184, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3715 { jwin_droplist_proc, 86, 180, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3716 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3717 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3718 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3719 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3720
3721 // 191
3722 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Script Weapon Defense:", NULL, NULL },
3723 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3724 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
3725 };
3726 */
3727
3728 static DIALOG enedata_dlg[] =
3729 {
3730 9 { jwin_win_proc, 0, 0, 320, 260, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3731 9 { jwin_tab_proc, 4, 17, 312, 220, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3732 //2
3733 ////tab procs must be listed prior to their elements!
3734 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_defence_tabs, NULL, (void *) enedata_dlg },
3735 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *) enedata_dlg },
3736 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *) enedata_dlg },
3737 // { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
3738
3739 //5
3740 9 { d_dummy_proc, 9904, 32, 1, 1, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3741 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *) enedata_dlg },
3742
3743 //Attributes Tab
3744 // { jwin_button_proc, 86, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3745 // { jwin_button_proc, 166, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3746 //7
3747 9 { jwin_text_proc, 21, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3748 9 { jwin_text_proc, 53, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3749 9 { jwin_text_proc, 92, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3750 9 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3751 9 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3752 //12
3753 9 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3754 9 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3755 9 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3756 9 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3757 //16
3758 9 { jwin_text_proc, 118, 53, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3759 9 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3760 9 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3761 9 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3762 9 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3763 //21
3764 9 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3765 9 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3766 9 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3767 9 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3768 //25
3769 9 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3770 9 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3771 9 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3772 9 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3773 9 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3774 //30
3775 9 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3776 9 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3777 9 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3778 9 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3779 9 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3780 9 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3781 //36
3782 9 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3783 9 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3784 9 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3785 9 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3786 9 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3787 //41
3788 9 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3789 9 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3790 9 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3791 9 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3792 //45
3793 9 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3794 9 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3795 9 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3796 9 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3797 9 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3798 //50
3799 9 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3800 9 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3801 9 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3802 9 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3803 //54
3804 //The tab for these ( npc->Attributes[] ) means that fewer fit. THey need to be rearranged. -Z
3805 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3806 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3807 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3808 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3809 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3810 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3811 9 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3812 9 { jwin_text_proc, 120+40, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3813 9 { jwin_text_proc, 120+40, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3814 9 { jwin_text_proc, 120+40, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3815 //64 : Misc Attribute boxes.
3816 9 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3817 9 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3818 9 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3819 9 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3820 9 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3821 9 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3822 9 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3823 9 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3824 9 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3825 9 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3826 //74
3827 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3828 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Does not draw", NULL, NULL },
3829 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3830 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3831 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3832 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3833 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3834 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3835 //82
3836 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3837 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3838 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3839 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3840 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3841 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3842 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3843 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3844 //90
3845 9 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3846 9 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3847 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3848 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3849 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3850 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3851 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3852 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3853 //98
3854 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3855 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3856 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3857 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3858 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3859 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3860 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3861 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3862 //106
3863 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3864 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3865 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3866 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3867 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3868 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3869 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3870 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3871 //114
3872 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3873 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3874 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3875 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3876 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3877 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3878 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3879 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3880 //122
3881 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3882 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3883 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3884 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3885 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3886 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3887 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3888 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3889 //130
3890 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3891 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3892 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3893 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3894 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3895 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3896 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3897 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3898 //138
3899 9 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3900 9 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3901 9 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3902 9 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3903 //142 timer_proc
3904 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3905 9 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3906 //144 - note: these are defenses 0-16, 17 is at 191
3907 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3908 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3909 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3910 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3911 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3912 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3913 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3914 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3915 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3916 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3917 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3918 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3919 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3920 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3921 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3922 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3923 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3924 //161
3925 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3926 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3927 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3928 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3929 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3930 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3931 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3932 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3933 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3934 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3935 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3936 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3937 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3938 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3939 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3940 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3941 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3942 9 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3943 //179
3944 9 { jwin_text_proc, 8, 161, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3945 9 { jwin_text_proc, 8, 176, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3946 9 { jwin_text_proc, 8, 191, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3947 //182
3948 9 { jwin_droplist_proc, 86, 157, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3949 9 { jwin_droplist_proc, 86, 172, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3950 9 { jwin_droplist_proc, 86, 187, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3951 9 { jwin_text_proc, 6, 214, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3952 9 { jwin_droplist_proc, 86, 210, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3953 //moved to attributes tabs
3954 9 { d_dummy_proc, 160, 126-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3955 9 { d_dummy_proc, 160, 144-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3956 9 { d_dummy_proc, 242, 122-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3957 9 { d_dummy_proc, 242, 140-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3958
3959 // 191
3960 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Whistle Weapon Defense:", NULL, NULL },
3961 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3962 //193 - sccript 1
3963 9 { jwin_text_proc, 6, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 1 Defense:", NULL, NULL },
3964 9 { jwin_text_proc, 6, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 2 Defense:", NULL, NULL },
3965 9 { jwin_text_proc, 6, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 3 Defense:", NULL, NULL },
3966 9 { jwin_text_proc, 6, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 4 Defense:", NULL, NULL },
3967 9 { jwin_text_proc, 6, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 5 Defense:", NULL, NULL },
3968 9 { jwin_text_proc, 6, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 6 Defense:", NULL, NULL },
3969 9 { jwin_text_proc, 6, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 7 Defense:", NULL, NULL },
3970 9 { jwin_text_proc, 6, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 8 Defense:", NULL, NULL },
3971 9 { jwin_text_proc, 6, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 9 Defense:", NULL, NULL },
3972 9 { jwin_text_proc, 6, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 10 Defense:", NULL, NULL },
3973 //203 script 1 pulldown
3974
3975 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
3976 9 { jwin_droplist_proc, 126, 51-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3977 9 { jwin_droplist_proc, 126, 67-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3978 9 { jwin_droplist_proc, 126, 83-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3979 9 { jwin_droplist_proc, 126, 99-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3980 9 { jwin_droplist_proc, 126, 115-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3981 9 { jwin_droplist_proc, 126, 131-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3982 9 { jwin_droplist_proc, 126, 147-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3983 9 { jwin_droplist_proc, 126, 163-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3984 9 { jwin_droplist_proc, 126, 179-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3985 9 { jwin_droplist_proc, 126, 196-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3986 //213 HitWidth and Height
3987 9 { jwin_text_proc, 12, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileWidth:", NULL, NULL },
3988 9 { jwin_edit_proc, 60, 51-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3989 9 { jwin_text_proc, 12, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileHeight:", NULL, NULL },
3990 9 { jwin_edit_proc, 60, 67-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3991 9 { jwin_text_proc, 12, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitWidth:", NULL, NULL },
3992 9 { jwin_edit_proc, 60, 83-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3993 9 { jwin_text_proc, 12, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitHeight:", NULL, NULL },
3994 9 { jwin_edit_proc, 60, 99-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3995 //221 HitZHeight
3996 9 { jwin_text_proc, 12, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitZHeight:", NULL, NULL },
3997 9 { jwin_edit_proc, 60, 115-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3998 //223 HitXOffset
3999 9 { jwin_text_proc, 12, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitXOffset:", NULL, NULL },
4000 9 { jwin_edit_proc, 60, 131-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4001 //225 HitYOffset
4002 9 { jwin_text_proc, 12, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitYOffset:", NULL, NULL },
4003 9 { jwin_edit_proc, 60, 147-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4004 //227 HitZOffset
4005 9 { jwin_text_proc, 12, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawZOffset:", NULL, NULL },
4006 9 { jwin_edit_proc, 60, 163-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4007 //229 DrawXOffset
4008 9 { jwin_text_proc, 12, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawXOffset:", NULL, NULL },
4009 9 { jwin_edit_proc, 60, 179-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4010 //231 DrawYOffset
4011 9 { jwin_text_proc, 12, 195, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawYOffset:", NULL, NULL },
4012 9 { jwin_edit_proc, 60, 195-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4013 //233 'Tiles' annotation.
4014 9 { jwin_text_proc, 96, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
4015 9 { jwin_text_proc, 96, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
4016 //235 : Weapon Sprite Pulldown
4017 9 { jwin_text_proc, 9, 90-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon Sprite:", NULL, NULL },
4018 9 { jwin_droplist_proc, 126, 86-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4019 // { jwin_edit_proc, 86, 189-4+12, 151, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4020 //237 HitWidth Override
4021 9 { jwin_check_proc, 94+50, 83, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4022 //238 HitHeight override
4023 9 { jwin_check_proc, 94+50, 99, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4024 //239 HitZHeight Override
4025 9 { jwin_check_proc, 94+50, 115, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4026 //240 HitXOffset override
4027 9 { jwin_check_proc, 94+50, 131, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4028 //241 HitYOffset Override
4029 9 { jwin_check_proc, 94+50, 147, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4030 //242 DrawZOffset Override
4031 9 { jwin_check_proc, 94+50, 163, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4032 //243 DrawXOffset Override
4033 9 { jwin_check_proc, 94+50, 179, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4034 //244 DrawYOffset Overrife
4035 9 { jwin_check_proc, 94+50, 195, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4036 //245 TileWidth Overrife
4037 9 { jwin_check_proc, 94+50, 51, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4038 //246 TileHeight Overrife
4039 9 { jwin_check_proc, 94+50, 67, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4040 //247, used to be 2
4041 9 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4042 //248 -- used to be 3
4043 9 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4044 //249 used to be 4
4045 9 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4046
4047 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
4048 // 250 Movement tabs
4049 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs , NULL, (void *) enedata_dlg },
4050 //251 Scripts tabs
4051 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs , NULL, (void *) enedata_dlg },
4052 // { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4053 //252 --was 5, OK button.
4054 9 { jwin_button_proc, 86, 240, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
4055 //253 -- CANCEL BUTTON
4056 9 { jwin_button_proc, 166, 240, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
4057 //254
4058 9 { jwin_check_proc, 6, 52, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[0]", NULL, NULL },
4059 9 { jwin_check_proc, 6, 62, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[1]", NULL, NULL },
4060 9 { jwin_check_proc, 6, 72, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[2]", NULL, NULL },
4061 9 { jwin_check_proc, 6, 82, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[3]", NULL, NULL },
4062 9 { jwin_check_proc, 6, 92, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[4]", NULL, NULL },
4063 9 { jwin_check_proc, 6, 102, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[5]", NULL, NULL },
4064 //260
4065 9 { jwin_check_proc, 6, 112, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[6]", NULL, NULL },
4066 9 { jwin_check_proc, 6, 122, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[7]", NULL, NULL },
4067 9 { jwin_check_proc, 6, 132, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[8]", NULL, NULL },
4068 9 { jwin_check_proc, 6, 142, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[9]", NULL, NULL },
4069 9 { jwin_check_proc, 6, 152, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[10]", NULL, NULL },
4070 //265
4071 9 { jwin_check_proc, 6, 162, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[11]", NULL, NULL },
4072 9 { jwin_check_proc, 6, 172, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[12]", NULL, NULL },
4073 9 { jwin_check_proc, 6, 182, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[13]", NULL, NULL },
4074 9 { jwin_check_proc, 6, 192, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[14]", NULL, NULL },
4075 9 { jwin_check_proc, 6, 202, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[15]", NULL, NULL },
4076 //270
4077 //attributes page 1, attrib 1 to 8 move from basic tab?
4078 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[0]", NULL, NULL },
4079 9 { d_dummy_proc, 9970, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[1]", NULL, NULL },
4080 9 { d_dummy_proc, 9970, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[2]", NULL, NULL },
4081 9 { d_dummy_proc, 9970, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[3]", NULL, NULL },
4082 9 { d_dummy_proc, 9970, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[4]", NULL, NULL },
4083 9 { d_dummy_proc, 9970, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[5]", NULL, NULL },
4084 9 { d_dummy_proc, 9970, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[6]", NULL, NULL },
4085 9 { d_dummy_proc, 9970, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[7]", NULL, NULL },
4086 //278 : Misc Attribute boxes.
4087 9 { d_dummy_proc, 9906, 56, 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4088 9 { d_dummy_proc, 9906, 56+(18), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4089 9 { d_dummy_proc, 9906, 56+(18*2), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4090 9 { d_dummy_proc, 9906, 56+(18*3), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4091 9 { d_dummy_proc, 9906, 56+(18*4), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4092 9 { d_dummy_proc, 9906, 56+(18*5), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4093 9 { d_dummy_proc, 9906, 56+(18*6), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4094 9 { d_dummy_proc, 9906, 56+(18*7), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4095 //286
4096 //attributes page 2, attrib 9 to 16
4097 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[8]", NULL, NULL },
4098 9 { d_dummy_proc, 9906, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Lower Attributes are on Basic->Data 2", NULL, NULL },
4099 //288
4100 9 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
4101 9 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
4102 //290
4103 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 13:", NULL, NULL },
4104 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 14:", NULL, NULL },
4105 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 15:", NULL, NULL },
4106 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 16:", NULL, NULL },
4107 //294 : Misc Attribute boxes.
4108 9 { d_dummy_proc, 9986, 56, 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4109 9 { d_dummy_proc, 9986, 56+(18), 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4110 //296
4111 9 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4112 9 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4113 //298
4114 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4115 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4116 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4117 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4118 //302
4119 //attributes page 3, attrib 17 to 24
4120 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 17:", NULL, NULL },
4121 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 18:", NULL, NULL },
4122 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 19:", NULL, NULL },
4123 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 20:", NULL, NULL },
4124 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 21:", NULL, NULL },
4125 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 22:", NULL, NULL },
4126 //308
4127 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 23:", NULL, NULL },
4128 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 24:", NULL, NULL },
4129 //310 : Misc Attribute boxes.
4130 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4131 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4132 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4133 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4134 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4135 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4136 //316
4137 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4138 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4139 //318
4140 //attributes page 4, attrib 25 to 32
4141 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 25:", NULL, NULL },
4142 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 26:", NULL, NULL },
4143 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 27:", NULL, NULL },
4144 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 28:", NULL, NULL },
4145 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 29:", NULL, NULL },
4146 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 30:", NULL, NULL },
4147 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 31:", NULL, NULL },
4148 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 32:", NULL, NULL },
4149 //327 : Misc Attribute boxes.
4150 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4151 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4152 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4153 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4154 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4155 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4156 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4157 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4158 //334
4159 9 { d_dummy_proc, 112+10, 47+38+10 + 18, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Action Script:", NULL, NULL },
4160
4161 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &npcscript_list, NULL, NULL },
4162 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "NPC Action Script:", NULL, NULL },
4163 //337
4164 //npc Script InitD Labels (not editable)
4165 // { jwin_text_proc, 6+10, 10+29+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D0:", NULL, NULL },
4166 // { jwin_text_proc, 6+10, 10+47+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D1:", NULL, NULL },
4167 // { jwin_text_proc, 6+10, 10+65+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D2:", NULL, NULL },
4168 // { jwin_text_proc, 6+10, 10+83+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D3:", NULL, NULL },
4169 // { jwin_text_proc, 6+10, 10+101+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D4:", NULL, NULL },
4170 // { jwin_text_proc, 6+10, 10+119+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D5:", NULL, NULL },
4171 // { jwin_text_proc, 6+10, 10+137+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D6:", NULL, NULL },
4172 // { jwin_text_proc, 6+10, 10+155+20, 24, 12, 0, 0, 0, 0, 0, 0, (void *) "D7:", NULL, NULL },
4173
4174 //editable npc script InitD fields
4175 //337
4176 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*) "InitD[0]", NULL, NULL},
4177 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4178 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4179 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4180 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4181 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4182 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4183 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4184
4185 // { jwin_edit_proc, 6+10, 10+29+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4186 // { jwin_edit_proc, 6+10, 10+47+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4187 // { jwin_edit_proc, 6+10, 10+65+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4188 // { jwin_edit_proc, 6+10, 10+83+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4189 // { jwin_edit_proc, 6+10, 10+101+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4190 // { jwin_edit_proc, 6+10, 10+119+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4191 // { jwin_edit_proc, 6+10, 10+137+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4192 // { jwin_edit_proc, 6+10, 10+155+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4193
4194 //NPC InitD Data fields
4195 //345
4196 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4197 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4198 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4199 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4200 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4201 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4202 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4203 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4204 //353
4205 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[0]", NULL, NULL },
4206 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4207 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4208 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4209 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4210 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4211 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4212 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4213 //361
4214 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4215 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4216 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4217 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4218 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4219 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4220 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4221 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4222 //369
4223 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "EWeapon Script:", NULL, NULL },
4224 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &eweaponscript_list, NULL, NULL },
4225 //371
4226 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Obeys Gravity", NULL, NULL },
4227 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Fall Into Pitfalls", NULL, NULL },
4228 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk Over Pitfalls", NULL, NULL },
4229 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Drown In Liquid", NULL, NULL },
4230 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk On Liquid", NULL, NULL },
4231 /*
4232 // 248 scripts
4233 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs, NULL, (void *)enedata_dlg },
4234 //249 graphics
4235 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *)enedata_dlg },
4236 //250 sounds
4237 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_sounds_tabs, NULL, (void *)enedata_dlg },
4238 //251 basic
4239 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *)enedata_dlg },
4240 //252 attacks
4241 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attacks_tabs, NULL, (void *)enedata_dlg },
4242 //253 movement
4243 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs, NULL, (void *)enedata_dlg },
4244 //254 flags
4245 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *)enedata_dlg },
4246 //255 attributes
4247 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attribs_tabs, NULL, (void *)enedata_dlg },
4248 */
4249 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
4250 //377
4251 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4252 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4253 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4254 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4255 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4256 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4257 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4258 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4259 //385
4260 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4261 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4262 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4263 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4264 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4265 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4266 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4267 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4268 //393
4269 9 { jwin_text_proc, 9, 108-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Shadow Sprite:", NULL, NULL },
4270 9 { jwin_droplist_proc, 126, 104-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4271 9 { jwin_text_proc, 9, 126-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sprite:", NULL, NULL },
4272 9 { jwin_droplist_proc, 126, 122-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4273 9 { jwin_text_proc, 9, 144-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Sprite:", NULL, NULL },
4274 9 { jwin_droplist_proc, 126, 140-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4275 //399
4276 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignores \"Temp No Return\".", NULL, NULL },
4277 9 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00020000", NULL, NULL },
4278 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00040000", NULL, NULL },
4279 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00080000", NULL, NULL },
4280 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00100000", NULL, NULL },
4281 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00200000", NULL, NULL },
4282 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00400000", NULL, NULL },
4283 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00800000", NULL, NULL },
4284 //407
4285 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x01000000", NULL, NULL },
4286 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x02000000", NULL, NULL },
4287 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x04000000", NULL, NULL },
4288 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x08000000", NULL, NULL },
4289 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x10000000", NULL, NULL },
4290 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x20000000", NULL, NULL },
4291 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x40000000", NULL, NULL },
4292 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x80000000", NULL, NULL },
4293 //415
4294 9 { jwin_text_proc, 6, 216, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "SwitchHook Weapon Defense:", NULL, NULL },
4295 9 { jwin_droplist_proc, 126, 216-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
4296 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Liquid", NULL, NULL },
4297 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Shallow Liquid", NULL, NULL },
4298 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Pitfalls", NULL, NULL },
4299 //420
4300 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through solidity", NULL, NULL },
4301 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through No Enemies flags / etc", NULL, NULL },
4302 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through screen edge", NULL, NULL },
4303 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Use 'scripted movement' for engine movement", NULL, NULL },
4304 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Cannot be pushed by moving solid objects", NULL, NULL },
4305 9 { jwin_text_proc, 6, 120, 280, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Below flags only affect scripted movement functions", NULL, NULL },
4306 //NPC Script Help buttons
4307 //426
4308 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4309 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4310 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4311 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4312 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4313 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4314 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4315 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4316 //434
4317 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4318 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4319 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4320 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4321 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4322 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4323 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4324 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4325
4326 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
4327 };
4328
4329
4330 void setEnemyLabels(int32_t family)
4331 {
4332 std::map<int32_t, EnemyNameInfo *> *nmap = getEnemyNameMap();
4333 std::map<int32_t, EnemyNameInfo *>::iterator it = nmap->find(family);
4334 EnemyNameInfo *inf = NULL;
4335
4336 if(it != nmap->end())
4337 inf = it->second;
4338
4339 // Default labels
4340 enedata_dlg[54].dp = (void*)"Misc. Attr. 1:";
4341 enedata_dlg[55].dp = (void*)"Misc. Attr. 2:";
4342 enedata_dlg[56].dp = (void*)"Misc. Attr. 3:";
4343 enedata_dlg[57].dp = (void*)"Misc. Attr. 4:";
4344 enedata_dlg[58].dp = (void*)"Misc. Attr. 5:";
4345 enedata_dlg[59].dp = (void*)"Misc. Attr. 6:";
4346 enedata_dlg[60].dp = (void*)"Misc. Attr. 7:";
4347 enedata_dlg[61].dp = (void*)"Misc. Attr. 8:";
4348 enedata_dlg[62].dp = (void*)"Misc. Attr. 9:";
4349 enedata_dlg[63].dp = (void*)"Misc. Attr. 10:";
4350
4351 if(family==eeKEESE || family==eeGHINI || family==eePEAHAT || family==eeMANHAN
4352 || family==eeGLEEOK || family==eePATRA || family==eeDIG)
4353 enedata_dlg[22].dp = (void*)"Turn Freq.:";
4354 else
4355 enedata_dlg[22].dp = (void*)"Halt Rate:";
4356
4357 //set enemy editor new 2.55 flags 1 to 16 label
4358 for(int32_t i = 0; i < 16; i++)
4359 {
4360 if(inf != NULL)
4361 {
4362 if(inf->flags[i]!=NULL)
4363 {
4364 enedata_dlg[254+i].dp = (char*)inf->flags[i];
4365 }
4366 else
4367 {
4368 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4369 }
4370 }
4371
4372 }
4373
4374 //Enemy Attribute Labels, starting at 11
4375 for ( int32_t q = 10; q < 16; q++ ) //check these numbers! -Z
4376 {
4377 if(inf != NULL && inf->attributes[q]!=NULL)
4378 {
4379 enedata_dlg[288+(q-10)].dp = (char*)inf->attributes[q];
4380 }
4381 if(inf != NULL && inf->list[q] != NULL)
4382 {
4383 enedata_dlg[296+(q-10)].proc = jwin_droplist_proc;
4384 enedata_dlg[296+(q-10)].fg = jwin_pal[jcTEXTFG];
4385 enedata_dlg[296+(q-10)].bg = jwin_pal[jcTEXTBG];
4386 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4387 enedata_dlg[296+(q-10)].dp = inf->list[q];
4388 enedata_dlg[296+(q-10)].dp2 = NULL;
4389 enedata_dlg[296+(q-10)].h = 22;
4390 }
4391 else
4392 {
4393 enedata_dlg[296+(q-10)].proc = jwin_edit_proc;
4394 enedata_dlg[296+(q-10)].fg = vc(14);
4395 enedata_dlg[296+(q-10)].bg = vc(1);
4396 enedata_dlg[296+(q-10)].dp = NULL;
4397 enedata_dlg[296+(q-10)].d1 = 6;
4398 enedata_dlg[296+(q-10)].h = 24;
4399 enedata_dlg[296+(q-10)].dp2 = get_zc_font(font_lfont_l);
4400 }
4401 }
4402 for ( int32_t q = 16; q < 24; q++ ) //check these numbers! -Z
4403 {
4404 if(inf->attributes[q]!=NULL)
4405 {
4406 enedata_dlg[302+(q-16)].dp = (char*)inf->attributes[q];
4407 }
4408 if(inf != NULL && inf->list[q] != NULL)
4409 {
4410 enedata_dlg[310+(q-16)].proc = jwin_droplist_proc;
4411 enedata_dlg[310+(q-16)].fg = jwin_pal[jcTEXTFG];
4412 enedata_dlg[310+(q-16)].bg = jwin_pal[jcTEXTBG];
4413 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4414 enedata_dlg[310+(q-16)].dp = inf->list[q];
4415 enedata_dlg[310+(q-16)].dp2 = NULL;
4416 enedata_dlg[310+(q-16)].h = 22;
4417 }
4418 else
4419 {
4420 enedata_dlg[310+(q-16)].proc = jwin_edit_proc;
4421 enedata_dlg[310+(q-16)].fg = vc(14);
4422 enedata_dlg[310+(q-16)].bg = vc(1);
4423 enedata_dlg[310+(q-16)].dp = NULL;
4424 enedata_dlg[310+(q-16)].d1 = 6;
4425 enedata_dlg[310+(q-16)].h = 24;
4426 enedata_dlg[310+(q-16)].dp2 = get_zc_font(font_lfont_l);
4427 }
4428 }
4429 for ( int32_t q = 24; q < 32; q++ ) //check these numbers! -Z
4430 {
4431 if(inf->attributes[q]!=NULL)
4432 {
4433 enedata_dlg[318+(q-24)].dp = (char*)inf->attributes[q]; //attr err
4434 }
4435 if(inf != NULL && inf->list[q] != NULL)
4436 {
4437 enedata_dlg[326+(q-24)].proc = jwin_droplist_proc;
4438 enedata_dlg[326+(q-24)].fg = jwin_pal[jcTEXTFG];
4439 enedata_dlg[326+(q-24)].bg = jwin_pal[jcTEXTBG];
4440 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4441 enedata_dlg[326+(q-24)].dp = inf->list[q];
4442 enedata_dlg[326+(q-24)].dp2 = NULL;
4443 enedata_dlg[326+(q-24)].h = 22;
4444 }
4445 else
4446 {
4447 enedata_dlg[326+(q-24)].proc = jwin_edit_proc;
4448 enedata_dlg[326+(q-24)].fg = vc(14);
4449 enedata_dlg[326+(q-24)].bg = vc(1);
4450 enedata_dlg[326+(q-24)].dp = NULL;
4451 enedata_dlg[326+(q-24)].d1 = 6;
4452 enedata_dlg[326+(q-24)].h = 24;
4453 enedata_dlg[326+(q-24)].dp2 = get_zc_font(font_lfont_l);
4454 }
4455 }
4456
4457 for(int32_t i = 0; i < 10; i++)
4458 {
4459 if(inf != NULL)
4460 {
4461 if(inf->misc[i]!=NULL)
4462 {
4463 enedata_dlg[54+i].dp = (char*)inf->misc[i];
4464 //enedata_dlg[54+i].flags = enedata_dlg[64+i].flags = 0;
4465 }
4466 else
4467 {
4468 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4469 }
4470 }
4471
4472 if(inf != NULL && inf->list[i] != NULL)
4473 {
4474 enedata_dlg[64+i].proc = jwin_droplist_proc;
4475 enedata_dlg[64+i].fg = jwin_pal[jcTEXTFG];
4476 enedata_dlg[64+i].bg = jwin_pal[jcTEXTBG];
4477 ((ListData*)inf->list[i])->font = (&a4fonts[font_lfont_l]);
4478 enedata_dlg[64+i].dp = inf->list[i];
4479 enedata_dlg[64+i].dp2 = NULL;
4480 enedata_dlg[64+i].h = 22;
4481 }
4482 else
4483 {
4484 enedata_dlg[64+i].proc = jwin_edit_proc;
4485 enedata_dlg[64+i].fg = vc(14);
4486 enedata_dlg[64+i].bg = vc(1);
4487 enedata_dlg[64+i].dp = NULL;
4488 enedata_dlg[64+i].d1 = 6;
4489 enedata_dlg[64+i].h = 24;
4490 enedata_dlg[64+i].dp2 = get_zc_font(font_lfont_l);
4491 }
4492 }
4493
4494 bool r = 0 != get_qr(qr_NEWENEMYTILES);
4495 enedata_dlg[r ? 47 : 48].flags |= D_DISABLED;
4496 enedata_dlg[r ? 48 : 47].flags &= ~D_DISABLED;
4497 enedata_dlg[r ? 140 : 141].flags |= D_DISABLED;
4498 enedata_dlg[r ? 141 : 140].flags &= ~D_DISABLED;
4499
4500 if(family==eeTRAP || family==eeROCK || family==eeDONGO ) //|| family==eeGANON)
4501 {
4502 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags |= D_DISABLED;
4503
4504 enedata_dlg[192].flags |= D_DISABLED; //Defenses disabled for Traps. rocks,. Dodongos and Ganon.
4505 //We will need to remove Ganon from this list once we give him defence properties in the EE. -Z
4506
4507 enedata_dlg[203].d1 |= D_DISABLED;
4508 enedata_dlg[204].d1 |= D_DISABLED;
4509 enedata_dlg[205].d1 |= D_DISABLED;
4510 enedata_dlg[206].d1 |= D_DISABLED;
4511 enedata_dlg[207].d1 |= D_DISABLED;
4512 enedata_dlg[208].d1 |= D_DISABLED;
4513 enedata_dlg[209].d1 |= D_DISABLED;
4514 enedata_dlg[210].d1 |= D_DISABLED;
4515 enedata_dlg[211].d1 |= D_DISABLED;
4516 enedata_dlg[212].d1 |= D_DISABLED;
4517 }
4518 else
4519 {
4520 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags &= ~D_DISABLED;
4521
4522 enedata_dlg[192].flags &= ~D_DISABLED;
4523 enedata_dlg[203].d1 &= ~D_DISABLED;
4524 enedata_dlg[204].d1 &= ~D_DISABLED;
4525 enedata_dlg[205].d1 &= ~D_DISABLED;
4526 enedata_dlg[206].d1 &= ~D_DISABLED;
4527 enedata_dlg[207].d1 &= ~D_DISABLED;
4528 enedata_dlg[208].d1 &= ~D_DISABLED;
4529 enedata_dlg[209].d1 &= ~D_DISABLED;
4530 enedata_dlg[210].d1 &= ~D_DISABLED;
4531 enedata_dlg[211].d1 &= ~D_DISABLED;
4532 enedata_dlg[212].d1 &= ~D_DISABLED;
4533 }
4534
4535 if(!(family==eeWALK || family==eeFIRE || family==eeOTHER))
4536 {
4537 enedata_dlg[98].flags |= D_DISABLED;
4538 enedata_dlg[99].flags |= D_DISABLED;
4539 enedata_dlg[100].flags |= D_DISABLED;
4540 enedata_dlg[101].flags |= D_DISABLED;
4541 enedata_dlg[102].flags |= D_DISABLED;
4542 enedata_dlg[186].flags |= D_DISABLED;
4543 }
4544 else
4545 {
4546 enedata_dlg[98].flags &= ~D_DISABLED;
4547 enedata_dlg[99].flags &= ~D_DISABLED;
4548 enedata_dlg[100].flags &= ~D_DISABLED;
4549 enedata_dlg[101].flags &= ~D_DISABLED;
4550 enedata_dlg[102].flags &= ~D_DISABLED;
4551 enedata_dlg[186].flags &= ~D_DISABLED;
4552 }
4553 }
4554
4555 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c)
4556 {
4557 //these are here to bypass compiler warnings about unused arguments
4558 c=c;
4559 int32_t *tempint=enedata_flags2_list;
4560 tempint=tempint;
4561
4562 switch(msg)
4563 {
4564 case MSG_CLICK:
4565 {
4566 int32_t f = -8; // Suppress Flip, but in a way that the lowest 3 bits are 0. (Trust me here.) -L
4567 int32_t t = d->d1;
4568 int32_t cs = d->d2;
4569
4570 if((CHECK_CTRL_CMD)
4571 ? select_tile_2(t,f,1,cs,true)
4572 : select_tile(t,f,1,cs,true))
4573 {
4574 d->d1 = t;
4575 enedata_dlg[247].d2 = cs;
4576 enedata_dlg[248].d2 = cs;
4577 enedata_dlg[249].d2 = cs;
4578 return D_REDRAW;
4579 }
4580 }
4581 break;
4582
4583 case MSG_DRAW:
4584 d->w = 36;
4585 d->h = 36;
4586
4587 BITMAP *buf = create_bitmap_ex(8,20,20);
4588 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
4589
4590 if(buf && bigbmp)
4591 {
4592 clear_bitmap(buf);
4593
4594 if(d->d1)
4595 overtile16(buf,d->d1,2,2,d->d2,0);
4596
4597 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-3, d->h-3);
4598 destroy_bitmap(buf);
4599 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
4600 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
4601 destroy_bitmap(bigbmp);
4602 }
4603
4604 // text_mode(d->bg);
4605 break;
4606 }
4607
4608 return D_O_K;
4609 }
4610
4611 void setEnemyScriptLabels(const guydata& test, char (&npc_initd_labels)[8][65], char (&weapon_initd_labels)[8][65])
4612 {
4613 for (int32_t q = 0; q < 8; ++q)
4614 {
4615 sprintf(npc_initd_labels[q], "InitD[%d]", q);
4616 sprintf(weapon_initd_labels[q], "InitD[%d]", q);
4617 enedata_dlg[345 + q].d1 &= ~0xF;
4618 enedata_dlg[345 + q].d1 |= nswapDEC;
4619 enedata_dlg[361 + q].d1 &= ~0xF;
4620 enedata_dlg[361 + q].d1 |= nswapDEC;
4621 enedata_dlg[426 + q].flags |= D_DISABLED;
4622 enedata_dlg[434 + q].flags |= D_DISABLED;
4623 }
4624
4625 if (test.script)
4626 {
4627 zasm_meta const& meta = guyscripts[test.script]->meta;
4628 for (int32_t q = 0; q < 8; ++q)
4629 {
4630 if (!meta.initd[q].empty())
4631 snprintf(npc_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4632 if(!meta.initd_help[q].empty())
4633 enedata_dlg[426 + q].flags &= ~D_DISABLED;
4634 DIALOG* swapbtn = (DIALOG*)enedata_dlg[345 + q].dp3;
4635 if(meta.initd_type[q]>-1)
4636 {
4637 swapbtn->d1 &= ~0xF;
4638 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4639 }
4640 }
4641 }
4642
4643 if (test.weaponscript)
4644 {
4645 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4646 for (int32_t q = 0; q < 8; ++q)
4647 {
4648 if(!meta.initd[q].empty())
4649 snprintf(weapon_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4650 if (!meta.initd_help[q].empty())
4651 enedata_dlg[434 + q].flags &= ~D_DISABLED;
4652 DIALOG* swapbtn = (DIALOG*)enedata_dlg[361 + q].dp3;
4653 if (meta.initd_type[q] > -1)
4654 {
4655 swapbtn->d1 &= ~0xF;
4656 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4657 }
4658 }
4659 }
4660 }
4661
4662 void showEnemyScriptMetaHelp(const guydata& test, int32_t i)
4663 {
4664 if (i < 8)
4665 {
4666 if (test.script)
4667 {
4668 zasm_meta const& meta = guyscripts[test.script]->meta;
4669 if(!meta.initd_help[i].empty())
4670 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4671 }
4672 }
4673 else
4674 {
4675 i -= 8;
4676 if (test.weaponscript)
4677 {
4678 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4679 if (!meta.initd_help[i].empty())
4680 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4681 }
4682 }
4683 }
4684
4685 void edit_enemydata(int32_t index)
4686 {
4687 //guysbuf[index].script = 1;
4688 char hp[8], dp[8], wdp[8], rat[8], hrt[8], hom[8], grm[8], spd[8],
4689 frt[8], efr[8], bsp[8];
4690 char w[8],h[8],sw[8],sh[8],ew[8],eh[8];
4691 char name[64];
4692 char ms[12][8];
4693 char attribs[32][8];
4694 char enemynumstr[75];
4695 char hitx[8], hity[8], hitz[8], tiley[8], tilex[8], hitofsx[8], hitofsy[8], hitofsz[8], drawofsx[8], drawofsy[8];
4696 char npc_initd_labels[8][65];
4697 char weapon_initd_labels[8][65];
4698 char weap_initdvals[8][13];
4699
4700 char initdvals[8][13];
4701 //begin npc script
4702 int32_t j = 0; build_binpcs_list(); //npc scripts lister
4703 for(j = 0; j < binpcs_cnt; j++)
4704 {
4705 if(binpcs[j].second == guysbuf[index].script -1)
4706 {
4707 enedata_dlg[335].d1 = j;
4708 break;
4709 }
4710 }
4711
4712 int32_t j2 = 0;
4713 build_bieweapons_list(); //lweapon scripts lister
4714 for(j2 = 0; j2 < bieweapons_cnt; j2++)
4715 {
4716 if(bieweapons[j2].second == guysbuf[index].weaponscript -1)
4717 {
4718 enedata_dlg[370].d1 = j2;
4719 break;
4720 }
4721 }
4722
4723 for ( int32_t q = 0; q < 8; q++ )
4724 {
4725 //NPC InitD / WeaponInitD
4726 enedata_dlg[345+q].dp = initdvals[q];
4727 enedata_dlg[361+q].dp = weap_initdvals[q];
4728 enedata_dlg[345+q].fg = guysbuf[index].initD[q];
4729 enedata_dlg[361+q].fg = guysbuf[index].weap_initiald[q];
4730 enedata_dlg[345+q].dp3 = &(enedata_dlg[377+q]);
4731 enedata_dlg[361+q].dp3 = &(enedata_dlg[385+q]);
4732
4733 //InitD Labels
4734 enedata_dlg[337 + q].dp = npc_initd_labels[q];
4735 enedata_dlg[353 + q].dp = weapon_initd_labels[q];
4736 }
4737
4738 //end npc script
4739
4740 //disable the missing dialog items!
4741 //else they will lurk in the background
4742 //stealing mouse focus -DD
4743 for(int32_t i=0; enedata_flags2_list[i] != -1; i++)
4744 {
4745 enedata_dlg[enedata_flags2_list[i]].proc = d_dummy_proc;
4746 enedata_dlg[enedata_flags2_list[i]].x = 0;
4747 enedata_dlg[enedata_flags2_list[i]].y = 0;
4748 enedata_dlg[enedata_flags2_list[i]].w = 0;
4749 enedata_dlg[enedata_flags2_list[i]].h = 0;
4750 }
4751
4752 sprintf(enemynumstr,"Enemy %d: %s", index, guy_string[index]);
4753 enedata_dlg[0].dp = enemynumstr;
4754 enedata_dlg[0].dp2 = get_zc_font(font_lfont);
4755 enedata_dlg[247].d1 = guysbuf[index].tile;
4756 enedata_dlg[247].d2 = guysbuf[index].cset;
4757 enedata_dlg[248].d1 = guysbuf[index].s_tile;
4758 enedata_dlg[248].d2 = guysbuf[index].cset;
4759 enedata_dlg[249].d1 = guysbuf[index].e_tile;
4760 enedata_dlg[249].d2 = guysbuf[index].cset;
4761
4762 // Enemy weapon list
4763 if(guysbuf[index].weapon==wNone)
4764 {
4765 enedata_dlg[45].d1 = 0;
4766 }
4767 else
4768 {
4769 if(biew_cnt==-1)
4770 {
4771 build_biew_list();
4772 }
4773
4774 for(int32_t j=0; j<biew_cnt; j++)
4775 {
4776 if(biew[j].i == guysbuf[index].weapon /*- wEnemyWeapons*/)
4777 enedata_dlg[45].d1 = j;
4778 }
4779 }
4780
4781 // Enemy family list
4782 if(bief_cnt==-1)
4783 {
4784 build_bief_list();
4785 }
4786
4787 for(int32_t j=0; j<bief_cnt; j++)
4788 {
4789 if(bief[j].i == guysbuf[index].family)
4790 enedata_dlg[46].d1 = j;
4791 }
4792
4793 // Enemy animation list
4794 if(biea_cnt==-1)
4795 {
4796 build_biea_list();
4797 }
4798
4799 for(int32_t j=0; j<biea_cnt; j++)
4800 {
4801 if(biea[j].i == guysbuf[index].anim)
4802 enedata_dlg[47].d1 = j;
4803
4804 if(biea[j].i == guysbuf[index].e_anim)
4805 enedata_dlg[48].d1 = j;
4806 }
4807
4808
4809 enedata_dlg[49].d1 = guysbuf[index].item_set;
4810
4811 sprintf(w,"%d",guysbuf[index].width);
4812 sprintf(h,"%d",guysbuf[index].height);
4813 sprintf(sw,"%d",guysbuf[index].s_width);
4814 sprintf(sh,"%d",guysbuf[index].s_height);
4815 sprintf(ew,"%d",guysbuf[index].e_width);
4816 sprintf(eh,"%d",guysbuf[index].e_height);
4817 enedata_dlg[30].dp = w;
4818 enedata_dlg[31].dp = h;
4819 enedata_dlg[32].dp = sw;
4820 enedata_dlg[33].dp = sh;
4821 enedata_dlg[34].dp = ew;
4822 enedata_dlg[35].dp = eh;
4823
4824 sprintf(hp,"%d",guysbuf[index].hp);
4825 sprintf(dp,"%d",guysbuf[index].dp);
4826 sprintf(wdp,"%d",guysbuf[index].wdp);
4827 sprintf(grm,"%d",guysbuf[index].grumble);
4828 enedata_dlg[37].dp = hp;
4829 enedata_dlg[38].dp = dp;
4830 enedata_dlg[39].dp = wdp;
4831 enedata_dlg[40].dp = grm;
4832
4833 sprintf(rat,"%d",guysbuf[index].rate);
4834 sprintf(hrt,"%d",guysbuf[index].hrate);
4835 sprintf(hom,"%d",guysbuf[index].homing);
4836 sprintf(spd,"%d",guysbuf[index].step);
4837 enedata_dlg[41].dp = rat;
4838 enedata_dlg[42].dp = hrt;
4839 enedata_dlg[43].dp = hom;
4840 enedata_dlg[44].dp = spd;
4841
4842 sprintf(name,"%s",guy_string[index]);
4843 enedata_dlg[36].dp = name;
4844
4845 sprintf(ms[0],"%d",guysbuf[index].misc1);
4846 sprintf(ms[1],"%d",guysbuf[index].misc2);
4847 sprintf(ms[2],"%d",guysbuf[index].misc3);
4848 sprintf(ms[3],"%d",guysbuf[index].misc4);
4849 sprintf(ms[4],"%d",guysbuf[index].misc5);
4850 sprintf(ms[5],"%d",guysbuf[index].misc6);
4851 sprintf(ms[6],"%d",guysbuf[index].misc7);
4852 sprintf(ms[7],"%d",guysbuf[index].misc8);
4853 sprintf(ms[8],"%d",guysbuf[index].misc9);
4854 sprintf(ms[9],"%d",guysbuf[index].misc10);
4855 sprintf(ms[10],"%d",guysbuf[index].misc11);
4856 sprintf(ms[11],"%d",guysbuf[index].misc12);
4857
4858 //four pages of attributes, 1 through 32
4859 sprintf(attribs[0],"%d",guysbuf[index].misc1);
4860 sprintf(attribs[1],"%d",guysbuf[index].misc2);
4861 sprintf(attribs[2],"%d",guysbuf[index].misc3);
4862 sprintf(attribs[3],"%d",guysbuf[index].misc4);
4863 sprintf(attribs[4],"%d",guysbuf[index].misc5);
4864 sprintf(attribs[5],"%d",guysbuf[index].misc6);
4865 sprintf(attribs[6],"%d",guysbuf[index].misc7);
4866 sprintf(attribs[7],"%d",guysbuf[index].misc8);
4867 sprintf(attribs[8],"%d",guysbuf[index].misc9);
4868 sprintf(attribs[9],"%d",guysbuf[index].misc10);
4869 sprintf(attribs[10],"%d",guysbuf[index].misc11);
4870 sprintf(attribs[11],"%d",guysbuf[index].misc12);
4871 sprintf(attribs[12],"%d",guysbuf[index].misc13);
4872 sprintf(attribs[13],"%d",guysbuf[index].misc14);
4873 sprintf(attribs[14],"%d",guysbuf[index].misc15);
4874 sprintf(attribs[15],"%d",guysbuf[index].misc16);
4875 sprintf(attribs[16],"%d",guysbuf[index].misc17);
4876 sprintf(attribs[17],"%d",guysbuf[index].misc18);
4877 sprintf(attribs[18],"%d",guysbuf[index].misc19);
4878 sprintf(attribs[19],"%d",guysbuf[index].misc20);
4879 sprintf(attribs[20],"%d",guysbuf[index].misc21);
4880 sprintf(attribs[21],"%d",guysbuf[index].misc22);
4881 sprintf(attribs[22],"%d",guysbuf[index].misc23);
4882 sprintf(attribs[23],"%d",guysbuf[index].misc24);
4883 sprintf(attribs[24],"%d",guysbuf[index].misc25);
4884 sprintf(attribs[25],"%d",guysbuf[index].misc26);
4885 sprintf(attribs[26],"%d",guysbuf[index].misc27);
4886 sprintf(attribs[27],"%d",guysbuf[index].misc28);
4887 sprintf(attribs[28],"%d",guysbuf[index].misc29);
4888 sprintf(attribs[29],"%d",guysbuf[index].misc30);
4889 sprintf(attribs[30],"%d",guysbuf[index].misc31);
4890 sprintf(attribs[31],"%d",guysbuf[index].misc32);
4891
4892 for(int32_t j=0; j <= edefBYRNA; j++)
4893 {
4894 enedata_dlg[j+161].d1 = guysbuf[index].defense[j];
4895 }
4896
4897 enedata_dlg[192].d1 = guysbuf[index].defense[edefWhistle];
4898 enedata_dlg[416].d1 = guysbuf[index].defense[edefSwitchHook];
4899
4900
4901 //Script Defenses
4902 enedata_dlg[203].d1 = guysbuf[index].defense[edefSCRIPT01];
4903 enedata_dlg[204].d1 = guysbuf[index].defense[edefSCRIPT02];
4904 enedata_dlg[205].d1 = guysbuf[index].defense[edefSCRIPT03];
4905 enedata_dlg[206].d1 = guysbuf[index].defense[edefSCRIPT04];
4906 enedata_dlg[207].d1 = guysbuf[index].defense[edefSCRIPT05];
4907 enedata_dlg[208].d1 = guysbuf[index].defense[edefSCRIPT06];
4908 enedata_dlg[209].d1 = guysbuf[index].defense[edefSCRIPT07];
4909 enedata_dlg[210].d1 = guysbuf[index].defense[edefSCRIPT08];
4910 enedata_dlg[211].d1 = guysbuf[index].defense[edefSCRIPT09];
4911 enedata_dlg[212].d1 = guysbuf[index].defense[edefSCRIPT10];
4912
4913 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
4914 sprintf(tilex,"%d",guysbuf[index].txsz);
4915 sprintf(tiley,"%d",guysbuf[index].tysz);
4916 sprintf(hitx,"%d",guysbuf[index].hxsz);
4917 sprintf(hity,"%d",guysbuf[index].hysz);
4918 sprintf(hitz,"%d",guysbuf[index].hzsz);
4919
4920 enedata_dlg[214].dp = tilex;
4921 enedata_dlg[216].dp = tiley;
4922 enedata_dlg[218].dp = hitx;
4923 enedata_dlg[220].dp = hity;
4924 enedata_dlg[222].dp = hitz;
4925
4926 //HitXOffset, HitYOFfset, hitZOffset, DrawXOffsrt, DrawYOffset
4927 sprintf(hitofsx,"%d",guysbuf[index].hxofs);
4928 sprintf(hitofsy,"%d",guysbuf[index].hyofs);
4929 sprintf(hitofsz,"%d",guysbuf[index].zofs);
4930 sprintf(drawofsx,"%d",guysbuf[index].xofs);
4931 sprintf(drawofsy,"%d",guysbuf[index].yofs); //This seems to be setting to +48 or something with any value set?! -Z
4932
4933 enedata_dlg[224].dp = hitofsx;
4934 enedata_dlg[226].dp = hitofsy;
4935 enedata_dlg[228].dp = hitofsz;
4936 enedata_dlg[230].dp = drawofsx;
4937 enedata_dlg[232].dp = drawofsy; //This seems to be setting to +48 or something with any value set?! -Z
4938
4939 //Override flags
4940 enedata_dlg[237].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_WIDTH) ? D_SELECTED : 0;
4941 enedata_dlg[238].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_HEIGHT) ? D_SELECTED : 0;
4942 enedata_dlg[239].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Z_HEIGHT) ? D_SELECTED : 0;
4943 enedata_dlg[240].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_X_OFFSET) ? D_SELECTED : 0;
4944 enedata_dlg[241].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Y_OFFSET) ? D_SELECTED : 0;
4945 enedata_dlg[242].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Z_OFFSET) ? D_SELECTED : 0;
4946 enedata_dlg[243].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_X_OFFSET) ? D_SELECTED : 0;
4947 enedata_dlg[244].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Y_OFFSET) ? D_SELECTED : 0;
4948 enedata_dlg[245].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_WIDTH) ? D_SELECTED : 0;
4949 enedata_dlg[246].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_HEIGHT) ? D_SELECTED : 0;
4950
4951 //New Misc FLags (2.55, flag1 to flag16)
4952 enedata_dlg[254].flags = (guysbuf[index].editorflags&ENEMY_FLAG1) ? D_SELECTED : 0;
4953 enedata_dlg[255].flags = (guysbuf[index].editorflags&ENEMY_FLAG2) ? D_SELECTED : 0;
4954 enedata_dlg[256].flags = (guysbuf[index].editorflags&ENEMY_FLAG3) ? D_SELECTED : 0;
4955 enedata_dlg[257].flags = (guysbuf[index].editorflags&ENEMY_FLAG4) ? D_SELECTED : 0;
4956 enedata_dlg[258].flags = (guysbuf[index].editorflags&ENEMY_FLAG5) ? D_SELECTED : 0;
4957 enedata_dlg[259].flags = (guysbuf[index].editorflags&ENEMY_FLAG6) ? D_SELECTED : 0;
4958 enedata_dlg[260].flags = (guysbuf[index].editorflags&ENEMY_FLAG7) ? D_SELECTED : 0;
4959 enedata_dlg[261].flags = (guysbuf[index].editorflags&ENEMY_FLAG8) ? D_SELECTED : 0;
4960 enedata_dlg[262].flags = (guysbuf[index].editorflags&ENEMY_FLAG9) ? D_SELECTED : 0;
4961 enedata_dlg[263].flags = (guysbuf[index].editorflags&ENEMY_FLAG10) ? D_SELECTED : 0;
4962 enedata_dlg[264].flags = (guysbuf[index].editorflags&ENEMY_FLAG11) ? D_SELECTED : 0;
4963 enedata_dlg[265].flags = (guysbuf[index].editorflags&ENEMY_FLAG12) ? D_SELECTED : 0;
4964 enedata_dlg[266].flags = (guysbuf[index].editorflags&ENEMY_FLAG13) ? D_SELECTED : 0;
4965 enedata_dlg[267].flags = (guysbuf[index].editorflags&ENEMY_FLAG14) ? D_SELECTED : 0;
4966 enedata_dlg[268].flags = (guysbuf[index].editorflags&ENEMY_FLAG15) ? D_SELECTED : 0;
4967 enedata_dlg[269].flags = (guysbuf[index].editorflags&ENEMY_FLAG16) ? D_SELECTED : 0;
4968
4969
4970 sprintf(frt,"%d",guysbuf[index].frate);
4971 sprintf(efr,"%d",guysbuf[index].e_frate);
4972 enedata_dlg[140].dp = frt;
4973 enedata_dlg[141].dp = efr;
4974
4975 //sprintf(sfx,"%d",guysbuf[index].bgsfx);
4976 enedata_dlg[182].d1= (int32_t)guysbuf[index].bgsfx;
4977 enedata_dlg[183].d1= (int32_t)guysbuf[index].hitsfx;
4978 if ( ( enedata_dlg[183].d1 == 0 ) && FFCore.getQuestHeaderInfo(vZelda) < 0x250 || (( FFCore.getQuestHeaderInfo(vZelda) == 0x250 ) && FFCore.getQuestHeaderInfo(vBuild) < 32 ) )
4979 {
4980 //If no user-set hit sound was in place, and the quest was made in a version before 2.53.0 Gamma 2:
4981 enedata_dlg[183].d1 = WAV_EHIT; //Fix quests using the wrong hit sound when loading this.
4982 //Force SFX_HIT here.
4983
4984 }
4985 enedata_dlg[184].d1= (int32_t)guysbuf[index].deadsfx;
4986
4987 // Sprites
4988 if(biw_cnt==-1)
4989 {
4990 build_biw_list();
4991 }
4992 for(int32_t j=0; j<biw_cnt; j++)
4993 {
4994 if(biw[j].i == guysbuf[index].wpnsprite)
4995 enedata_dlg[236].d1 = j;
4996 if(biw[j].i == guysbuf[index].spr_shadow)
4997 enedata_dlg[394].d1 = j;
4998 if(biw[j].i == guysbuf[index].spr_death)
4999 enedata_dlg[396].d1 = j;
5000 if(biw[j].i == guysbuf[index].spr_spawn)
5001 enedata_dlg[398].d1 = j;
5002 }
5003
5004 sprintf(bsp,"%d",guysbuf[index].bosspal);
5005
5006 if(guysbuf[index].cset == 14)
5007 {
5008 enedata_dlg[143].flags = D_SELECTED;
5009 }
5010 else
5011 {
5012 enedata_dlg[143].flags = 0;
5013 }
5014
5015 enedata_dlg[53].dp = bsp;
5016
5017 for(int32_t i=0; i<32; i++)
5018 enedata_dlg[74+i].flags = (guysbuf[index].flags & (1<<i)) ? D_SELECTED : 0;
5019
5020 enedata_dlg[186].d1 = (guysbuf[index].flags & guy_fadeinstant ? 2
5021 : guysbuf[index].flags & guy_fadeflicker ? 1 : 0);
5022
5023 for(int32_t i=0; i<16; i++)
5024 enedata_dlg[106+i].flags = (guysbuf[index].flags2 & (1<<i)) ? D_SELECTED : 0;
5025
5026 for(int32_t i=0; i<16; i++)
5027 enedata_dlg[399+i].flags = (guysbuf[index].flags2 & (1<<(i+16))) ? D_SELECTED : 0;
5028
5029 enedata_dlg[371].flags = (guysbuf[index].moveflags & FLAG_OBEYS_GRAV) ? D_SELECTED : 0;
5030 enedata_dlg[372].flags = (guysbuf[index].moveflags & FLAG_CAN_PITFALL) ? D_SELECTED : 0;
5031 enedata_dlg[373].flags = (guysbuf[index].moveflags & FLAG_CAN_PITWALK) ? D_SELECTED : 0;
5032 enedata_dlg[374].flags = (guysbuf[index].moveflags & FLAG_CAN_WATERDROWN) ? D_SELECTED : 0;
5033 enedata_dlg[375].flags = (guysbuf[index].moveflags & FLAG_CAN_WATERWALK) ? D_SELECTED : 0;
5034 enedata_dlg[417].flags = (guysbuf[index].moveflags & FLAG_ONLY_WATERWALK) ? D_SELECTED : 0;
5035 enedata_dlg[418].flags = (guysbuf[index].moveflags & FLAG_ONLY_SHALLOW_WATERWALK) ? D_SELECTED : 0;
5036 enedata_dlg[419].flags = (guysbuf[index].moveflags & FLAG_ONLY_PITWALK) ? D_SELECTED : 0;
5037 enedata_dlg[420].flags = (guysbuf[index].moveflags & FLAG_IGNORE_SOLIDITY) ? D_SELECTED : 0;
5038 enedata_dlg[421].flags = (guysbuf[index].moveflags & FLAG_IGNORE_BLOCKFLAGS) ? D_SELECTED : 0;
5039 enedata_dlg[422].flags = (guysbuf[index].moveflags & FLAG_IGNORE_SCREENEDGE) ? D_SELECTED : 0;
5040 enedata_dlg[423].flags = (guysbuf[index].moveflags & FLAG_USE_NEW_MOVEMENT) ? D_SELECTED : 0;
5041 enedata_dlg[424].flags = (guysbuf[index].moveflags & FLAG_NOT_PUSHABLE) ? D_SELECTED : 0;
5042
5043 int32_t ret;
5044 guydata test;
5045 memset(&test, 0, sizeof(guydata));
5046
5047 large_dialog(enedata_dlg);
5048
5049 setEnemyLabels(guysbuf[index].family);
5050 setEnemyScriptLabels(guysbuf[index], npc_initd_labels, weapon_initd_labels);
5051
5052 popup_zqdialog_start();
5053 do
5054 {
5055 for(int32_t i=0; i<10; i++)
5056 {
5057 if(enedata_dlg[64+i].proc==jwin_droplist_proc)
5058 {
5059 int32_t size = 0;
5060 ((ListData*)enedata_dlg[64+i].dp)->listFunc(-1,&size);
5061 // Bound ms[i] as well as enedata_dlg[64+i].d1
5062 sprintf(ms[i],"%d",vbound(atoi(ms[i]), 0, size));
5063 enedata_dlg[64+i].d1 = atoi(ms[i]);
5064 }
5065 else
5066 enedata_dlg[64+i].dp = ms[i];
5067 }
5068 for ( int32_t q = 10; q < 16; q++ )
5069 {
5070 if (enedata_dlg[296+(q-10)].proc == jwin_droplist_proc)
5071 {
5072 int32_t size = 0;
5073 ((ListData*)enedata_dlg[296+(q-10)].dp)->listFunc(-1,&size);
5074 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5075 enedata_dlg[296+(q-10)].d1 = atoi(attribs[q]);
5076 }
5077 else
5078 enedata_dlg[296+(q-10)].dp = attribs[q];
5079 }
5080 for ( int32_t q = 16; q < 24; q++ )
5081 {
5082 if (enedata_dlg[310+(q-16)].proc == jwin_droplist_proc)
5083 {
5084 int32_t size = 0;
5085 ((ListData*)enedata_dlg[310+(q-16)].dp)->listFunc(-1,&size);
5086 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5087 enedata_dlg[310+(q-16)].d1 = atoi(attribs[q]);
5088 }
5089 else
5090 enedata_dlg[310+(q-16)].dp = attribs[q];
5091 }
5092 for ( int32_t q = 24; q < 32; q++ )
5093 {
5094 if (enedata_dlg[326+(q-24)].proc == jwin_droplist_proc)
5095 {
5096 int32_t size = 0;
5097 ((ListData*)enedata_dlg[326+(q-24)].dp)->listFunc(-1,&size);
5098 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5099 enedata_dlg[326+(q-24)].d1 = atoi(attribs[q]);
5100 }
5101 else
5102 enedata_dlg[326+(q-24)].dp = attribs[q];
5103 }
5104
5105 enedata_dlg[189].dp = ms[10]; //These two are unused. Misc 11 and Misc 12 use attribs now
5106 enedata_dlg[190].dp = ms[11];
5107
5108
5109 enedata_dlg[278].dp = attribs[0];
5110 enedata_dlg[279].dp = attribs[1];
5111 enedata_dlg[280].dp = attribs[2];
5112 enedata_dlg[281].dp = attribs[3];
5113 enedata_dlg[282].dp = attribs[4];
5114 enedata_dlg[283].dp = attribs[5];
5115 enedata_dlg[284].dp = attribs[6];
5116 enedata_dlg[285].dp = attribs[7];
5117
5118 enedata_dlg[294].dp = attribs[8];
5119 enedata_dlg[295].dp = attribs[9];
5120 /*
5121 enedata_dlg[296].dp = attribs[10];
5122 enedata_dlg[297].dp = attribs[11];
5123 enedata_dlg[298].dp = attribs[12];
5124 enedata_dlg[299].dp = attribs[13];
5125 enedata_dlg[300].dp = attribs[14];
5126 enedata_dlg[301].dp = attribs[15];
5127
5128 enedata_dlg[310].dp = attribs[16];
5129 enedata_dlg[311].dp = attribs[17];
5130 enedata_dlg[312].dp = attribs[18];
5131 enedata_dlg[313].dp = attribs[19];
5132 enedata_dlg[314].dp = attribs[20];
5133 enedata_dlg[315].dp = attribs[21];
5134 enedata_dlg[316].dp = attribs[22];
5135 enedata_dlg[317].dp = attribs[23];
5136
5137 enedata_dlg[326].dp = attribs[24];
5138 enedata_dlg[327].dp = attribs[25];
5139 enedata_dlg[328].dp = attribs[26];
5140 enedata_dlg[329].dp = attribs[27];
5141 enedata_dlg[330].dp = attribs[28];
5142 enedata_dlg[331].dp = attribs[29];
5143 enedata_dlg[332].dp = attribs[30];
5144 enedata_dlg[333].dp = attribs[31];*/
5145
5146 ret = do_zqdialog(enedata_dlg,3);
5147
5148
5149
5150 test.tile = enedata_dlg[247].d1;
5151 test.cset = enedata_dlg[247].d2;
5152 test.s_tile = enedata_dlg[248].d1;
5153 test.e_tile = enedata_dlg[249].d1;
5154
5155 test.width = vbound(atoi(w),0,20);
5156 test.height = vbound(atoi(h),0,20);
5157 test.s_width = vbound(atoi(sw),0,20);
5158 test.s_height = vbound(atoi(sh),0,20);
5159 test.e_width = vbound(atoi(ew),0,20);
5160 test.e_height = vbound(atoi(eh),0,20);
5161
5162 test.weapon = enedata_dlg[45].d1 != 0 ? biew[enedata_dlg[45].d1].i /*+ wEnemyWeapons*/ : wNone;
5163 test.family = bief[enedata_dlg[46].d1].i;
5164 test.anim = biea[enedata_dlg[47].d1].i;
5165 test.e_anim = biea[enedata_dlg[48].d1].i;
5166 test.item_set = enedata_dlg[49].d1;
5167
5168 test.hp = vbound(atoi(hp), 0, 32767); //0x7FFF, not 0xFFFF?
5169 test.dp = vbound(atoi(dp), 0, 32767);
5170 test.wdp = vbound(atoi(wdp), 0, 32767);
5171 test.grumble = vbound(atoi(grm), -4, 4);
5172
5173 test.rate = vbound(atoi(rat), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5174 test.hrate = vbound(atoi(hrt), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5175 test.homing = vbound(atoi(hom), -256, (test.family == eeFIRE || test.family == eeOTHER)?32767:256);
5176 test.step = vbound(atoi(spd),0, (test.family == eeFIRE || test.family == eeOTHER)?32767:1000);
5177
5178 test.frate = vbound(atoi(frt),0,256);
5179 test.e_frate = vbound(atoi(efr),0,256);
5180 test.bosspal = vbound(atoi(bsp),-1,29);
5181 test.bgsfx = enedata_dlg[182].d1;
5182 test.hitsfx = enedata_dlg[183].d1;
5183 test.deadsfx = enedata_dlg[184].d1;
5184
5185 // Sprites
5186 for(int32_t j=0; j<biw_cnt; j++)
5187 {
5188 if(enedata_dlg[236].d1 == j)
5189 test.wpnsprite = biw[j].i;
5190 if(enedata_dlg[394].d1 == j)
5191 test.spr_shadow = biw[j].i;
5192 if(enedata_dlg[396].d1 == j)
5193 test.spr_death = biw[j].i;
5194 if(enedata_dlg[398].d1 == j)
5195 test.spr_spawn = biw[j].i;
5196 }
5197
5198 test.misc1 = (enedata_dlg[64].proc==jwin_droplist_proc) ? enedata_dlg[64].d1 : atol(ms[0]);
5199 test.misc2 = (enedata_dlg[65].proc==jwin_droplist_proc) ? enedata_dlg[65].d1 : atol(ms[1]);
5200 test.misc3 = (enedata_dlg[66].proc==jwin_droplist_proc) ? enedata_dlg[66].d1 : atol(ms[2]);
5201 test.misc4 = (enedata_dlg[67].proc==jwin_droplist_proc) ? enedata_dlg[67].d1 : atol(ms[3]);
5202 test.misc5 = (enedata_dlg[68].proc==jwin_droplist_proc) ? enedata_dlg[68].d1 : atol(ms[4]);
5203 test.misc6 = (enedata_dlg[69].proc==jwin_droplist_proc) ? enedata_dlg[69].d1 : atol(ms[5]);
5204 test.misc7 = (enedata_dlg[70].proc==jwin_droplist_proc) ? enedata_dlg[70].d1 : atol(ms[6]);
5205 test.misc8 = (enedata_dlg[71].proc==jwin_droplist_proc) ? enedata_dlg[71].d1 : atol(ms[7]);
5206 test.misc9 = (enedata_dlg[72].proc==jwin_droplist_proc) ? enedata_dlg[72].d1 : atol(ms[8]);
5207 test.misc10 = (enedata_dlg[73].proc==jwin_droplist_proc) ? enedata_dlg[73].d1 : atol(ms[9]);
5208 test.misc11 = (enedata_dlg[296].proc==jwin_droplist_proc) ? enedata_dlg[296].d1 : atol(attribs[10]);
5209 test.misc12 = (enedata_dlg[297].proc==jwin_droplist_proc) ? enedata_dlg[297].d1 : atol(attribs[11]);
5210 test.misc13 = (enedata_dlg[298].proc==jwin_droplist_proc) ? enedata_dlg[298].d1 : atol(attribs[12]);
5211 test.misc14 = (enedata_dlg[299].proc==jwin_droplist_proc) ? enedata_dlg[299].d1 : atol(attribs[13]);
5212 test.misc15 = (enedata_dlg[300].proc==jwin_droplist_proc) ? enedata_dlg[300].d1 : atol(attribs[14]);
5213 test.misc16 = (enedata_dlg[301].proc==jwin_droplist_proc) ? enedata_dlg[301].d1 : atol(attribs[15]);
5214 test.misc17 = (enedata_dlg[310].proc==jwin_droplist_proc) ? enedata_dlg[310].d1 : atol(attribs[16]);
5215 test.misc18 = (enedata_dlg[311].proc==jwin_droplist_proc) ? enedata_dlg[311].d1 : atol(attribs[17]);
5216 test.misc19 = (enedata_dlg[312].proc==jwin_droplist_proc) ? enedata_dlg[312].d1 : atol(attribs[18]);
5217 test.misc20 = (enedata_dlg[313].proc==jwin_droplist_proc) ? enedata_dlg[313].d1 : atol(attribs[19]);
5218 test.misc21 = (enedata_dlg[314].proc==jwin_droplist_proc) ? enedata_dlg[314].d1 : atol(attribs[20]);
5219 test.misc22 = (enedata_dlg[315].proc==jwin_droplist_proc) ? enedata_dlg[315].d1 : atol(attribs[21]);
5220 test.misc23 = (enedata_dlg[316].proc==jwin_droplist_proc) ? enedata_dlg[316].d1 : atol(attribs[22]);
5221 test.misc24 = (enedata_dlg[317].proc==jwin_droplist_proc) ? enedata_dlg[317].d1 : atol(attribs[23]);
5222 test.misc25 = (enedata_dlg[326].proc==jwin_droplist_proc) ? enedata_dlg[326].d1 : atol(attribs[24]);
5223 test.misc26 = (enedata_dlg[327].proc==jwin_droplist_proc) ? enedata_dlg[327].d1 : atol(attribs[25]);
5224 test.misc27 = (enedata_dlg[328].proc==jwin_droplist_proc) ? enedata_dlg[328].d1 : atol(attribs[26]);
5225 test.misc28 = (enedata_dlg[329].proc==jwin_droplist_proc) ? enedata_dlg[329].d1 : atol(attribs[27]);
5226 test.misc29 = (enedata_dlg[330].proc==jwin_droplist_proc) ? enedata_dlg[330].d1 : atol(attribs[28]);
5227 test.misc30 = (enedata_dlg[331].proc==jwin_droplist_proc) ? enedata_dlg[331].d1 : atol(attribs[29]);
5228 test.misc31 = (enedata_dlg[332].proc==jwin_droplist_proc) ? enedata_dlg[332].d1 : atol(attribs[30]);
5229 test.misc32 = (enedata_dlg[333].proc==jwin_droplist_proc) ? enedata_dlg[333].d1 : atol(attribs[31]);
5230
5231
5232
5233 for(int32_t j=0; j <= edefBYRNA; j++)
5234 {
5235 test.defense[j] = enedata_dlg[j+161].d1;
5236 }
5237
5238 test.defense[edefWhistle] = enedata_dlg[192].d1;
5239 test.defense[edefSwitchHook] = enedata_dlg[416].d1;
5240 //Are the new defs missing here? -Z
5241
5242
5243 for(int32_t i=0; i<32; i++)
5244 test.flags |= (enedata_dlg[74+i].flags & D_SELECTED) ? (1<<i) : 0;
5245
5246 test.flags &= ~(guy_fadeinstant|guy_fadeflicker);
5247 test.flags |= (enedata_dlg[186].d1==2 ? guy_fadeinstant : enedata_dlg[186].d1==1 ? guy_fadeflicker : 0);
5248
5249 for(int32_t i=0; i<16; i++)
5250 test.flags2 |= (enedata_dlg[106+i].flags & D_SELECTED) ? (1<<i) : 0;
5251
5252 for(int32_t i=0; i<16; i++)
5253 test.flags2 |= (enedata_dlg[399+i].flags & D_SELECTED) ? (1<<(i+16)) : 0;
5254
5255 if(enedata_dlg[143].flags & D_SELECTED)
5256 {
5257 test.cset = 14;
5258 }
5259 //if we disable the box, revert to cset 8 -Z.
5260 else if(guysbuf[index].cset == 14 || test.cset == 14)
5261 {
5262 test.cset = 8;
5263 }
5264 test.defense[edefSCRIPT01] = enedata_dlg[203].d1;
5265 test.defense[edefSCRIPT02] = enedata_dlg[204].d1;
5266 test.defense[edefSCRIPT03] = enedata_dlg[205].d1;
5267 test.defense[edefSCRIPT04] = enedata_dlg[206].d1;
5268 test.defense[edefSCRIPT05] = enedata_dlg[207].d1;
5269 test.defense[edefSCRIPT06] = enedata_dlg[208].d1;
5270 test.defense[edefSCRIPT07] = enedata_dlg[209].d1;
5271 test.defense[edefSCRIPT08] = enedata_dlg[210].d1;
5272 test.defense[edefSCRIPT09] = enedata_dlg[211].d1;
5273 test.defense[edefSCRIPT10] = enedata_dlg[212].d1;
5274
5275 //tilewidth, tileheight, hitwidth, hitheight,
5276 test.txsz = atoi(tilex);
5277 test.tysz = atoi(tiley);
5278 test.hxsz = atoi(hitx);
5279 test.hysz = atoi(hity);
5280 test.hzsz = atoi(hitz);
5281 test.hxofs = atoi(hitofsx);
5282 test.hyofs = atoi(hitofsy);
5283 test.zofs = atoi(hitofsz);
5284 test.xofs = atoi(drawofsx);
5285 test.yofs = atoi(drawofsy); //This seems to be setting to +48 or something with any value set?! -Z
5286
5287 //override flags
5288 if(enedata_dlg[237].flags & D_SELECTED)
5289 test.SIZEflags |= guyflagOVERRIDE_HIT_WIDTH;
5290
5291 if(enedata_dlg[238].flags & D_SELECTED)
5292 test.SIZEflags |= guyflagOVERRIDE_HIT_HEIGHT;
5293
5294 if(enedata_dlg[239].flags & D_SELECTED)
5295 test.SIZEflags |= guyflagOVERRIDE_HIT_Z_HEIGHT;
5296
5297 if(enedata_dlg[240].flags & D_SELECTED)
5298 test.SIZEflags |= guyflagOVERRIDE_HIT_X_OFFSET;
5299
5300 if(enedata_dlg[241].flags & D_SELECTED)
5301 test.SIZEflags |= guyflagOVERRIDE_HIT_Y_OFFSET;
5302
5303 if(enedata_dlg[242].flags & D_SELECTED)
5304 test.SIZEflags |= guyflagOVERRIDE_DRAW_Z_OFFSET;
5305 if(enedata_dlg[243].flags & D_SELECTED)
5306 test.SIZEflags |= guyflagOVERRIDE_DRAW_X_OFFSET;
5307
5308 if(enedata_dlg[244].flags & D_SELECTED)
5309 test.SIZEflags |= guyflagOVERRIDE_DRAW_Y_OFFSET;
5310 if(enedata_dlg[245].flags & D_SELECTED)
5311 test.SIZEflags |= guyflagOVERRIDE_TILE_WIDTH;
5312 if(enedata_dlg[246].flags & D_SELECTED)
5313 test.SIZEflags |= guyflagOVERRIDE_TILE_HEIGHT;
5314
5315 //new 2.55 misc flags 1 to 16
5316 if(enedata_dlg[254].flags & D_SELECTED)
5317 test.editorflags |= ENEMY_FLAG1;
5318 if(enedata_dlg[255].flags & D_SELECTED)
5319 test.editorflags |= ENEMY_FLAG2;
5320 if(enedata_dlg[256].flags & D_SELECTED)
5321 test.editorflags |= ENEMY_FLAG3;
5322 if(enedata_dlg[257].flags & D_SELECTED)
5323 test.editorflags |= ENEMY_FLAG4;
5324 if(enedata_dlg[258].flags & D_SELECTED)
5325 test.editorflags |= ENEMY_FLAG5;
5326 if(enedata_dlg[259].flags & D_SELECTED)
5327 test.editorflags |= ENEMY_FLAG6;
5328 if(enedata_dlg[260].flags & D_SELECTED)
5329 test.editorflags |= ENEMY_FLAG7;
5330 if(enedata_dlg[261].flags & D_SELECTED)
5331 test.editorflags |= ENEMY_FLAG8;
5332 if(enedata_dlg[262].flags & D_SELECTED)
5333 test.editorflags |= ENEMY_FLAG9;
5334 if(enedata_dlg[263].flags & D_SELECTED)
5335 test.editorflags |= ENEMY_FLAG10;
5336 if(enedata_dlg[264].flags & D_SELECTED)
5337 test.editorflags |= ENEMY_FLAG11;
5338 if(enedata_dlg[265].flags & D_SELECTED)
5339 test.editorflags |= ENEMY_FLAG12;
5340 if(enedata_dlg[266].flags & D_SELECTED)
5341 test.editorflags |= ENEMY_FLAG13;
5342 if(enedata_dlg[267].flags & D_SELECTED)
5343 test.editorflags |= ENEMY_FLAG14;
5344 if(enedata_dlg[268].flags & D_SELECTED)
5345 test.editorflags |= ENEMY_FLAG15;
5346 if(enedata_dlg[269].flags & D_SELECTED)
5347 test.editorflags |= ENEMY_FLAG16;
5348
5349 //begin npc scripts
5350 test.script = binpcs[enedata_dlg[335].d1].second + 1;
5351 for ( int32_t q = 0; q < 8; q++ )
5352 {
5353 test.initD[q] = enedata_dlg[345+q].fg;
5354 test.weap_initiald[q] = enedata_dlg[361+q].fg;
5355 }
5356 //eweapon script
5357 test.weaponscript = bieweapons[enedata_dlg[370].d1].second + 1;
5358
5359 test.moveflags = 0;
5360 if(enedata_dlg[371].flags & D_SELECTED)
5361 test.moveflags |= FLAG_OBEYS_GRAV;
5362 if(enedata_dlg[372].flags & D_SELECTED)
5363 test.moveflags |= FLAG_CAN_PITFALL;
5364 if(enedata_dlg[373].flags & D_SELECTED)
5365 test.moveflags |= FLAG_CAN_PITWALK;
5366 if(enedata_dlg[374].flags & D_SELECTED)
5367 test.moveflags |= FLAG_CAN_WATERDROWN;
5368 if(enedata_dlg[375].flags & D_SELECTED)
5369 test.moveflags |= FLAG_CAN_WATERWALK;
5370 if(enedata_dlg[417].flags & D_SELECTED)
5371 test.moveflags |= FLAG_ONLY_WATERWALK;
5372 if(enedata_dlg[418].flags & D_SELECTED)
5373 test.moveflags |= FLAG_ONLY_SHALLOW_WATERWALK;
5374 if(enedata_dlg[419].flags & D_SELECTED)
5375 test.moveflags |= FLAG_ONLY_PITWALK;
5376 if(enedata_dlg[420].flags & D_SELECTED)
5377 test.moveflags |= FLAG_IGNORE_SOLIDITY;
5378 if(enedata_dlg[421].flags & D_SELECTED)
5379 test.moveflags |= FLAG_IGNORE_BLOCKFLAGS;
5380 if(enedata_dlg[422].flags & D_SELECTED)
5381 test.moveflags |= FLAG_IGNORE_SCREENEDGE;
5382 if(enedata_dlg[423].flags & D_SELECTED)
5383 test.moveflags |= FLAG_USE_NEW_MOVEMENT;
5384 if(enedata_dlg[424].flags & D_SELECTED)
5385 test.moveflags |= FLAG_NOT_PUSHABLE;
5386
5387 //end npc scripts
5388
5389 if(ret==252) //OK Button
5390 {
5391 strcpy(guy_string[index],name);
5392 guysbuf[index] = test;
5393 saved = false;
5394 }
5395 else if(ret==46)
5396 {
5397 setEnemyLabels(bief[enedata_dlg[46].d1].i);
5398 }
5399 else if(ret==178)
5400 {
5401 for(int32_t j=1; j <= edefBYRNA; j++)
5402 {
5403 enedata_dlg[j+161].d1 = enedata_dlg[161].d1;
5404 }
5405
5406 enedata_dlg[192].d1 = enedata_dlg[161].d1;
5407 //Clear to 0
5408 enedata_dlg[203].d1 = enedata_dlg[161].d1;
5409 enedata_dlg[204].d1 = enedata_dlg[161].d1;
5410 enedata_dlg[205].d1 = enedata_dlg[161].d1;
5411 enedata_dlg[206].d1 = enedata_dlg[161].d1;
5412 enedata_dlg[207].d1 = enedata_dlg[161].d1;
5413 enedata_dlg[208].d1 = enedata_dlg[161].d1;
5414 enedata_dlg[209].d1 = enedata_dlg[161].d1;
5415 enedata_dlg[210].d1 = enedata_dlg[161].d1;
5416 enedata_dlg[211].d1 = enedata_dlg[161].d1;
5417 enedata_dlg[212].d1 = enedata_dlg[161].d1;
5418 }
5419 else if (ret == 335 || ret == 370) // Script dropdowns
5420 {
5421 setEnemyScriptLabels(test, npc_initd_labels, weapon_initd_labels);
5422 }
5423 else if (ret >= 426 && ret <= 441) // InitD help buttons
5424 {
5425 showEnemyScriptMetaHelp(test, ret - 426);
5426 }
5427 }
5428 //252 == OK button, 253 == Cancel Button
5429 while(ret != 252 && ret != 253 && ret != 0);
5430 popup_zqdialog_end();
5431 }
5432
5433 extern DIALOG elist_dlg[];
5434 static int32_t copiedGuy;
5435
5436 int32_t readonenpc(PACKFILE *f, int32_t index)
5437 {
5438 dword section_version = 0;
5439 dword section_cversion = 0;
5440 int32_t zversion = 0;
5441 int32_t zbuild = 0;
5442 guydata tempguy;
5443 memset(&tempguy, 0, sizeof(guydata));
5444 //reset_itembuf(&tempitem,i);
5445
5446
5447 char npcstring[64]={0}; //guy_string[]
5448 //section version info
5449 if(!p_igetl(&zversion,f))
5450 {
5451 return 0;
5452 }
5453 if(!p_igetl(&zbuild,f))
5454 {
5455 return 0;
5456 }
5457
5458 if(!p_igetw(&section_version,f))
5459 {
5460 return 0;
5461 }
5462
5463 if(!p_igetw(&section_cversion,f))
5464 {
5465 return 0;
5466 }
5467 al_trace("readonenpc section_version: %d\n", section_version);
5468 al_trace("readonenpc section_cversion: %d\n", section_cversion);
5469
5470 if ( zversion > ZELDA_VERSION )
5471 {
5472 al_trace("Cannot read .znpc packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
5473 return 0;
5474 }
5475 else if ( ( section_version > V_GUYS ) || ( section_version == V_GUYS && section_cversion < CV_GUYS ) )
5476 {
5477 al_trace("Cannot read .znpc packfile made using V_GUYS (%d) subversion (%d)\n", section_version, section_cversion);
5478 return 0;
5479
5480 }
5481 else
5482 {
5483 al_trace("Reading a .znpc packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
5484 }
5485
5486 if(!pfread(&npcstring, 64, f))
5487 {
5488 return 0;
5489 }
5490
5491 //section data
5492 if(!p_igetl(&tempguy.flags,f))
5493 {
5494 return 0;
5495 }
5496
5497 if(!p_igetl(&tempguy.flags2,f))
5498 {
5499 return 0;
5500 }
5501
5502 if(!p_igetl(&tempguy.tile,f))
5503 {
5504 return 0;
5505 }
5506
5507 if(!p_getc(&tempguy.width,f))
5508 {
5509 return 0;
5510 }
5511
5512 if(!p_getc(&tempguy.height,f))
5513 {
5514 return 0;
5515 }
5516
5517 if(!p_igetl(&tempguy.s_tile,f))
5518 {
5519 return 0;
5520 }
5521
5522 if(!p_getc(&tempguy.s_width,f))
5523 {
5524 return 0;
5525 }
5526
5527 if(!p_getc(&tempguy.s_height,f))
5528 {
5529 return 0;
5530 }
5531
5532 if(!p_igetl(&tempguy.e_tile,f))
5533 {
5534 return 0;
5535 }
5536
5537 if(!p_getc(&tempguy.e_width,f))
5538 {
5539 return 0;
5540 }
5541
5542 if(!p_getc(&tempguy.e_height,f))
5543 {
5544 return 0;
5545 }
5546
5547 if(!p_igetw(&tempguy.hp,f))
5548 {
5549 return 0;
5550 }
5551
5552 if(!p_igetw(&tempguy.family,f))
5553 {
5554 return 0;
5555 }
5556
5557 if(!p_igetw(&tempguy.cset,f))
5558 {
5559 return 0;
5560 }
5561
5562 if(!p_igetw(&tempguy.anim,f))
5563 {
5564 return 0;
5565 }
5566
5567 if(!p_igetw(&tempguy.e_anim,f))
5568 {
5569 return 0;
5570 }
5571
5572 if(!p_igetw(&tempguy.frate,f))
5573 {
5574 return 0;
5575 }
5576
5577 if(!p_igetw(&tempguy.e_frate,f))
5578 {
5579 return 0;
5580 }
5581
5582 if(!p_igetw(&tempguy.dp,f))
5583 {
5584 return 0;
5585 }
5586
5587 if(!p_igetw(&tempguy.wdp,f))
5588 {
5589 return 0;
5590 }
5591
5592 if(!p_igetw(&tempguy.weapon,f))
5593 {
5594 return 0;
5595 }
5596
5597 if(!p_igetw(&tempguy.rate,f))
5598 {
5599 return 0;
5600 }
5601
5602 if(!p_igetw(&tempguy.hrate,f))
5603 {
5604 return 0;
5605 }
5606
5607 if(!p_igetw(&tempguy.step,f))
5608 {
5609 return 0;
5610 }
5611
5612 if(!p_igetw(&tempguy.homing,f))
5613 {
5614 return 0;
5615 }
5616
5617 if(!p_igetw(&tempguy.grumble,f))
5618 {
5619 return 0;
5620 }
5621
5622 if(!p_igetw(&tempguy.item_set,f))
5623 {
5624 return 0;
5625 }
5626
5627 if(!p_igetl(&tempguy.misc1,f))
5628 {
5629 return 0;
5630 }
5631
5632 if(!p_igetl(&tempguy.misc2,f))
5633 {
5634 return 0;
5635 }
5636
5637 if(!p_igetl(&tempguy.misc3,f))
5638 {
5639 return 0;
5640 }
5641
5642 if(!p_igetl(&tempguy.misc4,f))
5643 {
5644 return 0;
5645 }
5646
5647 if(!p_igetl(&tempguy.misc5,f))
5648 {
5649 return 0;
5650 }
5651
5652 if(!p_igetl(&tempguy.misc6,f))
5653 {
5654 return 0;
5655 }
5656
5657 if(!p_igetl(&tempguy.misc7,f))
5658 {
5659 return 0;
5660 }
5661
5662 if(!p_igetl(&tempguy.misc8,f))
5663 {
5664 return 0;
5665 }
5666
5667 if(!p_igetl(&tempguy.misc9,f))
5668 {
5669 return 0;
5670 }
5671
5672 if(!p_igetl(&tempguy.misc10,f))
5673 {
5674 return 0;
5675 }
5676
5677 if(!p_igetw(&tempguy.bgsfx,f))
5678 {
5679 return 0;
5680 }
5681
5682 if(!p_igetw(&tempguy.bosspal,f))
5683 {
5684 return 0;
5685 }
5686
5687 if(!p_igetw(&tempguy.extend,f))
5688 {
5689 return 0;
5690 }
5691
5692 for(int32_t j=0; j < edefLAST; j++)
5693 {
5694 if(!p_getc(&tempguy.defense[j],f))
5695 {
5696 return 0;
5697 }
5698 }
5699
5700 if(!p_getc(&tempguy.hitsfx,f))
5701 {
5702 return 0;
5703 }
5704
5705 if(!p_getc(&tempguy.deadsfx,f))
5706 {
5707 return 0;
5708 }
5709
5710 if(!p_igetl(&tempguy.misc11,f))
5711 {
5712 return 0;
5713 }
5714
5715 if(!p_igetl(&tempguy.misc12,f))
5716 {
5717 return 0;
5718 }
5719
5720
5721 if ( zversion >= 0x255 )
5722 {
5723 if ( section_version >= 41 )
5724 {
5725 //New itemdata vars -Z
5726 //! version 27
5727
5728 //2.55 starts here
5729 for(int32_t j=edefLAST; j < edefLAST255; j++)
5730 {
5731 if(!p_getc(&tempguy.defense[j],f))
5732 {
5733 return 0;
5734 }
5735 }
5736
5737 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5738 if(!p_igetl(&tempguy.txsz,f))
5739 {
5740 return 0;
5741 }
5742 if(!p_igetl(&tempguy.tysz,f))
5743 {
5744 return 0;
5745 }
5746 if(!p_igetl(&tempguy.hxsz,f))
5747 {
5748 return 0;
5749 }
5750 if(!p_igetl(&tempguy.hysz,f))
5751 {
5752 return 0;
5753 }
5754 if(!p_igetl(&tempguy.hzsz,f))
5755 {
5756 return 0;
5757 }
5758 // These are not fixed types, but ints, so they are safe to use here.
5759 if(!p_igetl(&tempguy.hxofs,f))
5760 {
5761 return 0;
5762 }
5763 if(!p_igetl(&tempguy.hyofs,f))
5764 {
5765 return 0;
5766 }
5767 if(!p_igetl(&tempguy.xofs,f))
5768 {
5769 return 0;
5770 }
5771 if(!p_igetl(&tempguy.yofs,f))
5772 {
5773 return 0;
5774 }
5775 if(!p_igetl(&tempguy.zofs,f))
5776 {
5777 return 0;
5778 }
5779 if(!p_igetl(&tempguy.wpnsprite,f))
5780 {
5781 return 0;
5782 }
5783 if(!p_igetl(&tempguy.SIZEflags,f))
5784 {
5785 return 0;
5786 }
5787 if(!p_igetl(&tempguy.frozentile,f))
5788 {
5789 return 0;
5790 }
5791 if(!p_igetl(&tempguy.frozencset,f))
5792 {
5793 return 0;
5794 }
5795 if(!p_igetl(&tempguy.frozenclock,f))
5796 {
5797 return 0;
5798 }
5799
5800 for ( int32_t q = 0; q < 10; q++ )
5801 {
5802 if(!p_igetw(&tempguy.frozenmisc[q],f))
5803 {
5804 return 0;
5805 }
5806 }
5807 if(!p_igetw(&tempguy.firesfx,f))
5808 {
5809 return 0;
5810 }
5811 //misc 16->31
5812 if(!p_igetl(&tempguy.misc16,f))
5813 {
5814 return 0;
5815 }
5816 if(!p_igetl(&tempguy.misc17,f))
5817 {
5818 return 0;
5819 }
5820 if(!p_igetl(&tempguy.misc18,f))
5821 {
5822 return 0;
5823 }
5824 if(!p_igetl(&tempguy.misc19,f))
5825 {
5826 return 0;
5827 }
5828 if(!p_igetl(&tempguy.misc20,f))
5829 {
5830 return 0;
5831 }
5832 if(!p_igetl(&tempguy.misc21,f))
5833 {
5834 return 0;
5835 }
5836 if(!p_igetl(&tempguy.misc22,f))
5837 {
5838 return 0;
5839 }
5840 if(!p_igetl(&tempguy.misc23,f))
5841 {
5842 return 0;
5843 }
5844 if(!p_igetl(&tempguy.misc24,f))
5845 {
5846 return 0;
5847 }
5848 if(!p_igetl(&tempguy.misc25,f))
5849 {
5850 return 0;
5851 }
5852 if(!p_igetl(&tempguy.misc26,f))
5853 {
5854 return 0;
5855 }
5856 if(!p_igetl(&tempguy.misc27,f))
5857 {
5858 return 0;
5859 }
5860 if(!p_igetl(&tempguy.misc28,f))
5861 {
5862 return 0;
5863 }
5864 if(!p_igetl(&tempguy.misc29,f))
5865 {
5866 return 0;
5867 }
5868 if(!p_igetl(&tempguy.misc30,f))
5869 {
5870 return 0;
5871 }
5872 if(!p_igetl(&tempguy.misc31,f))
5873 {
5874 return 0;
5875 }
5876 if(!p_igetl(&tempguy.misc32,f))
5877 {
5878 return 0;
5879 }
5880 for ( int32_t q = 0; q < 32; q++ )
5881 {
5882 if(!p_igetl(&tempguy.movement[q],f))
5883 {
5884 return 0;
5885 }
5886 }
5887 for ( int32_t q = 0; q < 32; q++ )
5888 {
5889 if(!p_igetl(&tempguy.new_weapon[q],f))
5890 {
5891 return 0;
5892 }
5893 }
5894 if(!p_igetw(&tempguy.script,f))
5895 {
5896 return 0;
5897 }
5898 for ( int32_t q = 0; q < 8; q++ )
5899 {
5900 if(!p_igetl(&tempguy.initD[q],f))
5901 {
5902 return 0;
5903 }
5904 }
5905 for ( int32_t q = 0; q < 2; q++ )
5906 {
5907 if(!p_igetl(&tempguy.initA[q],f))
5908 {
5909 return 0;
5910 }
5911 }
5912 if(!p_igetl(&tempguy.editorflags,f))
5913 {
5914 return 0;
5915 }
5916 //somehow forgot these in the older builds -Z
5917 if(!p_igetl(&tempguy.misc13,f))
5918 {
5919 return 0;
5920 }
5921 if(!p_igetl(&tempguy.misc14,f))
5922 {
5923 return 0;
5924 }
5925 if(!p_igetl(&tempguy.misc15,f))
5926 {
5927 return 0;
5928 }
5929
5930 //Enemy Editor InitD[] labels
5931 for ( int32_t q = 0; q < 8; q++ )
5932 {
5933 for ( int32_t w = 0; w < 65; w++ )
5934 {
5935 if(!p_getc(&tempguy.initD_label[q][w],f))
5936 {
5937 return 0;
5938 }
5939 }
5940 for ( int32_t w = 0; w < 65; w++ )
5941 {
5942 if(!p_getc(&tempguy.weapon_initD_label[q][w],f))
5943 {
5944 return 0;
5945 }
5946 }
5947 }
5948 if(!p_igetw(&tempguy.weaponscript,f))
5949 {
5950 return 0;
5951 }
5952 //eweapon initD
5953 for ( int32_t q = 0; q < 8; q++ )
5954 {
5955 if(!p_igetl(&tempguy.weap_initiald[q],f))
5956 {
5957 return 0;
5958 }
5959 }
5960 }
5961 }
5962 memcpy(&guysbuf[index], &tempguy, sizeof(guydata));
5963 //strcpy(item_string[index], istring);
5964 guysbuf[bie[index].i] = tempguy;
5965 strcpy(guy_string[bie[index].i], npcstring);
5966
5967 return 1;
5968 }
5969
5970 int32_t writeonenpc(PACKFILE *f, int32_t i)
5971 {
5972
5973 dword section_version=V_GUYS;
5974 dword section_cversion=CV_GUYS;
5975 int32_t zversion = ZELDA_VERSION;
5976 int32_t zbuild = VERSION_BUILD;
5977
5978
5979 //section version info
5980 if(!p_iputl(zversion,f))
5981 {
5982 return 0;
5983 }
5984 if(!p_iputl(zbuild,f))
5985 {
5986 return 0;
5987 }
5988 if(!p_iputw(section_version,f))
5989 {
5990 new_return(2);
5991 }
5992
5993 if(!p_iputw(section_cversion,f))
5994 {
5995 new_return(3);
5996 }
5997
5998 if(!pfwrite(guy_string[i], 64, f))
5999 {
6000 new_return(5);
6001 }
6002
6003 if(!p_iputl(guysbuf[i].flags,f))
6004 {
6005 return 0;
6006 }
6007
6008 if(!p_iputl(guysbuf[i].flags2,f))
6009 {
6010 return 0;
6011 }
6012
6013 if(!p_iputl(guysbuf[i].tile,f))
6014 {
6015 return 0;
6016 }
6017
6018 if(!p_putc(guysbuf[i].width,f))
6019 {
6020 return 0;
6021 }
6022
6023 if(!p_putc(guysbuf[i].height,f))
6024 {
6025 return 0;
6026 }
6027
6028 if(!p_iputl(guysbuf[i].s_tile,f))
6029 {
6030 return 0;
6031 }
6032
6033 if(!p_putc(guysbuf[i].s_width,f))
6034 {
6035 return 0;
6036 }
6037
6038 if(!p_putc(guysbuf[i].s_height,f))
6039 {
6040 return 0;
6041 }
6042
6043 if(!p_iputl(guysbuf[i].e_tile,f))
6044 {
6045 return 0;
6046 }
6047
6048 if(!p_putc(guysbuf[i].e_width,f))
6049 {
6050 return 0;
6051 }
6052
6053 if(!p_putc(guysbuf[i].e_height,f))
6054 {
6055 return 0;
6056 }
6057
6058 if(!p_iputw(guysbuf[i].hp,f))
6059 {
6060 return 0;
6061 }
6062
6063 if(!p_iputw(guysbuf[i].family,f))
6064 {
6065 return 0;
6066 }
6067
6068 if(!p_iputw(guysbuf[i].cset,f))
6069 {
6070 return 0;
6071 }
6072
6073 if(!p_iputw(guysbuf[i].anim,f))
6074 {
6075 return 0;
6076 }
6077
6078 if(!p_iputw(guysbuf[i].e_anim,f))
6079 {
6080 return 0;
6081 }
6082
6083 if(!p_iputw(guysbuf[i].frate,f))
6084 {
6085 return 0;
6086 }
6087
6088 if(!p_iputw(guysbuf[i].e_frate,f))
6089 {
6090 return 0;
6091 }
6092
6093 if(!p_iputw(guysbuf[i].dp,f))
6094 {
6095 return 0;
6096 }
6097
6098 if(!p_iputw(guysbuf[i].wdp,f))
6099 {
6100 return 0;
6101 }
6102
6103 if(!p_iputw(guysbuf[i].weapon,f))
6104 {
6105 return 0;
6106 }
6107
6108 if(!p_iputw(guysbuf[i].rate,f))
6109 {
6110 return 0;
6111 }
6112
6113 if(!p_iputw(guysbuf[i].hrate,f))
6114 {
6115 return 0;
6116 }
6117
6118 if(!p_iputw(guysbuf[i].step,f))
6119 {
6120 return 0;
6121 }
6122
6123 if(!p_iputw(guysbuf[i].homing,f))
6124 {
6125 return 0;
6126 }
6127
6128 if(!p_iputw(guysbuf[i].grumble,f))
6129 {
6130 return 0;
6131 }
6132
6133 if(!p_iputw(guysbuf[i].item_set,f))
6134 {
6135 return 0;
6136 }
6137
6138 if(!p_iputl(guysbuf[i].misc1,f))
6139 {
6140 return 0;
6141 }
6142
6143 if(!p_iputl(guysbuf[i].misc2,f))
6144 {
6145 return 0;
6146 }
6147
6148 if(!p_iputl(guysbuf[i].misc3,f))
6149 {
6150 return 0;
6151 }
6152
6153 if(!p_iputl(guysbuf[i].misc4,f))
6154 {
6155 return 0;
6156 }
6157
6158 if(!p_iputl(guysbuf[i].misc5,f))
6159 {
6160 return 0;
6161 }
6162
6163 if(!p_iputl(guysbuf[i].misc6,f))
6164 {
6165 return 0;
6166 }
6167
6168 if(!p_iputl(guysbuf[i].misc7,f))
6169 {
6170 return 0;
6171 }
6172
6173 if(!p_iputl(guysbuf[i].misc8,f))
6174 {
6175 return 0;
6176 }
6177
6178 if(!p_iputl(guysbuf[i].misc9,f))
6179 {
6180 return 0;
6181 }
6182
6183 if(!p_iputl(guysbuf[i].misc10,f))
6184 {
6185 return 0;
6186 }
6187
6188 if(!p_iputw(guysbuf[i].bgsfx,f))
6189 {
6190 return 0;
6191 }
6192
6193 if(!p_iputw(guysbuf[i].bosspal,f))
6194 {
6195 return 0;
6196 }
6197
6198 if(!p_iputw(guysbuf[i].extend,f))
6199 {
6200 return 0;
6201 }
6202
6203 for(int32_t j=0; j < edefLAST; j++)
6204 {
6205 if(!p_putc(guysbuf[i].defense[j],f))
6206 {
6207 return 0;
6208 }
6209 }
6210
6211 if(!p_putc(guysbuf[i].hitsfx,f))
6212 {
6213 return 0;
6214 }
6215
6216 if(!p_putc(guysbuf[i].deadsfx,f))
6217 {
6218 return 0;
6219 }
6220
6221 if(!p_iputl(guysbuf[i].misc11,f))
6222 {
6223 return 0;
6224 }
6225
6226 if(!p_iputl(guysbuf[i].misc12,f))
6227 {
6228 return 0;
6229 }
6230
6231 //2.55 starts here
6232 for(int32_t j=edefLAST; j < edefLAST255; j++)
6233 {
6234 if(!p_putc(guysbuf[i].defense[j],f))
6235 {
6236 return 0;
6237 }
6238 }
6239
6240 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
6241 if(!p_iputl(guysbuf[i].txsz,f))
6242 {
6243 return 0;
6244 }
6245 if(!p_iputl(guysbuf[i].tysz,f))
6246 {
6247 return 0;
6248 }
6249 if(!p_iputl(guysbuf[i].hxsz,f))
6250 {
6251 return 0;
6252 }
6253 if(!p_iputl(guysbuf[i].hysz,f))
6254 {
6255 return 0;
6256 }
6257 if(!p_iputl(guysbuf[i].hzsz,f))
6258 {
6259 return 0;
6260 }
6261 // These are not fixed types, but ints, so they are safe to use here.
6262 if(!p_iputl(guysbuf[i].hxofs,f))
6263 {
6264 return 0;
6265 }
6266 if(!p_iputl(guysbuf[i].hyofs,f))
6267 {
6268 return 0;
6269 }
6270 if(!p_iputl(guysbuf[i].xofs,f))
6271 {
6272 return 0;
6273 }
6274 if(!p_iputl(guysbuf[i].yofs,f))
6275 {
6276 return 0;
6277 }
6278 if(!p_iputl(guysbuf[i].zofs,f))
6279 {
6280 return 0;
6281 }
6282 if(!p_iputl(guysbuf[i].wpnsprite,f))
6283 {
6284 return 0;
6285 }
6286 if(!p_iputl(guysbuf[i].SIZEflags,f))
6287 {
6288 return 0;
6289 }
6290 if(!p_iputl(guysbuf[i].frozentile,f))
6291 {
6292 return 0;
6293 }
6294 if(!p_iputl(guysbuf[i].frozencset,f))
6295 {
6296 return 0;
6297 }
6298 if(!p_iputl(guysbuf[i].frozenclock,f))
6299 {
6300 return 0;
6301 }
6302
6303 for ( int32_t q = 0; q < 10; q++ )
6304 {
6305 if(!p_iputw(guysbuf[i].frozenmisc[q],f))
6306 {
6307 return 0;
6308 }
6309 }
6310 if(!p_iputw(guysbuf[i].firesfx,f))
6311 {
6312 return 0;
6313 }
6314 //misc 16->31
6315 if(!p_iputl(guysbuf[i].misc16,f))
6316 {
6317 return 0;
6318 }
6319 if(!p_iputl(guysbuf[i].misc17,f))
6320 {
6321 return 0;
6322 }
6323 if(!p_iputl(guysbuf[i].misc18,f))
6324 {
6325 return 0;
6326 }
6327 if(!p_iputl(guysbuf[i].misc19,f))
6328 {
6329 return 0;
6330 }
6331 if(!p_iputl(guysbuf[i].misc20,f))
6332 {
6333 return 0;
6334 }
6335 if(!p_iputl(guysbuf[i].misc21,f))
6336 {
6337 return 0;
6338 }
6339 if(!p_iputl(guysbuf[i].misc22,f))
6340 {
6341 return 0;
6342 }
6343 if(!p_iputl(guysbuf[i].misc23,f))
6344 {
6345 return 0;
6346 }
6347 if(!p_iputl(guysbuf[i].misc24,f))
6348 {
6349 return 0;
6350 }
6351 if(!p_iputl(guysbuf[i].misc25,f))
6352 {
6353 return 0;
6354 }
6355 if(!p_iputl(guysbuf[i].misc26,f))
6356 {
6357 return 0;
6358 }
6359 if(!p_iputl(guysbuf[i].misc27,f))
6360 {
6361 return 0;
6362 }
6363 if(!p_iputl(guysbuf[i].misc28,f))
6364 {
6365 return 0;
6366 }
6367 if(!p_iputl(guysbuf[i].misc29,f))
6368 {
6369 return 0;
6370 }
6371 if(!p_iputl(guysbuf[i].misc30,f))
6372 {
6373 return 0;
6374 }
6375 if(!p_iputl(guysbuf[i].misc31,f))
6376 {
6377 return 0;
6378 }
6379 if(!p_iputl(guysbuf[i].misc32,f))
6380 {
6381 return 0;
6382 }
6383 for ( int32_t q = 0; q < 32; q++ )
6384 {
6385 if(!p_iputl(guysbuf[i].movement[q],f))
6386 {
6387 return 0;
6388 }
6389 }
6390 for ( int32_t q = 0; q < 32; q++ )
6391 {
6392 if(!p_iputl(guysbuf[i].new_weapon[q],f))
6393 {
6394 return 0;
6395 }
6396 }
6397 if(!p_iputw(guysbuf[i].script,f))
6398 {
6399 return 0;
6400 }
6401 for ( int32_t q = 0; q < 8; q++ )
6402 {
6403 if(!p_iputl(guysbuf[i].initD[q],f))
6404 {
6405 return 0;
6406 }
6407 }
6408 for ( int32_t q = 0; q < 2; q++ )
6409 {
6410 if(!p_iputl(guysbuf[i].initA[q],f))
6411 {
6412 return 0;
6413 }
6414 }
6415 if(!p_iputl(guysbuf[i].editorflags,f))
6416 {
6417 return 0;
6418 }
6419 //somehow forgot these in the older builds -Z
6420 if(!p_iputl(guysbuf[i].misc13,f))
6421 {
6422 return 0;
6423 }
6424 if(!p_iputl(guysbuf[i].misc14,f))
6425 {
6426 return 0;
6427 }
6428 if(!p_iputl(guysbuf[i].misc15,f))
6429 {
6430 return 0;
6431 }
6432
6433 //Enemy Editor InitD[] labels
6434 for ( int32_t q = 0; q < 8; q++ )
6435 {
6436 for ( int32_t w = 0; w < 65; w++ )
6437 {
6438 if(!p_putc(guysbuf[i].initD_label[q][w],f))
6439 {
6440 return 0;
6441 }
6442 }
6443 for ( int32_t w = 0; w < 65; w++ )
6444 {
6445 if(!p_putc(guysbuf[i].weapon_initD_label[q][w],f))
6446 {
6447 return 0;
6448 }
6449 }
6450 }
6451 if(!p_iputw(guysbuf[i].weaponscript,f))
6452 {
6453 return 0;
6454 }
6455 //eweapon initD
6456 for ( int32_t q = 0; q < 8; q++ )
6457 {
6458 if(!p_iputl(guysbuf[i].weap_initiald[q],f))
6459 {
6460 return 0;
6461 }
6462 }
6463 return 1;
6464 }
6465
6466
6467
6468
6469
6470
6471 void paste_enemy(int32_t index)
6472 {
6473 if(index < 0) index = elist_dlg[2].d1;
6474 if(index==0)
6475 return;
6476 if(copiedGuy<0) //Nothing copied
6477 return;
6478 guysbuf[bie[index].i]=guysbuf[copiedGuy];
6479 elist_dlg[2].flags|=D_DIRTY;
6480 saved=false;
6481 }
6482 void copy_enemy(int32_t index)
6483 {
6484 if(index < 0) index = elist_dlg[2].d1;
6485 if(index==0)
6486 return;
6487 copiedGuy=bie[index].i;
6488 }
6489 void save_enemy(int32_t index)
6490 {
6491 if(index < 0) index = elist_dlg[2].d1;
6492 if(index==0)
6493 return;
6494 if(!getname("Save NPC(.znpc)", "znpc", NULL,datapath,false))
6495 return;
6496 int32_t iid = bie[index].i;
6497
6498 PACKFILE *f=pack_fopen_password(temppath,F_WRITE, "");
6499 if(!f) return;
6500 if (!writeonenpc(f,iid))
6501 {
6502 Z_error("Could not write to .znpc packfile %s\n", temppath);
6503 InfoDialog("ZNPC Error", "Could not save the specified enemy.").show();
6504 }
6505 pack_fclose(f);
6506 }
6507 void load_enemy(int32_t index)
6508 {
6509 if(index < 0) index = elist_dlg[2].d1;
6510 if(index==0)
6511 return;
6512 if(!getname("Load NPC(.znpc)", "znpc", NULL,datapath,false))
6513 return;
6514 PACKFILE *f=pack_fopen_password(temppath,F_READ, "");
6515 if(!f) return;
6516
6517 if (!readonenpc(f,index))
6518 {
6519 al_trace("Could not read from .znpc packfile %s\n", temppath);
6520 InfoDialog("ZNPC Error", "Could not load the specified enemy.").show();
6521 }
6522
6523 pack_fclose(f);
6524 elist_dlg[2].flags|=D_DIRTY;
6525 saved=false;
6526 }
6527
6528
6529 void elist_rclick_func(int32_t index, int32_t x, int32_t y)
6530 {
6531 if(index == 0)
6532 return;
6533
6534 NewMenu rcmenu {
6535 { "&Copy", [&](){copy_enemy(index);} },
6536 { "Paste", "&v", [&](){paste_enemy(index);}, 0, copiedGuy <= 0 },
6537 { "&Save", [&](){save_enemy(index);} },
6538 { "&Load", [&](){load_enemy(index);} },
6539 };
6540 rcmenu.pop(x, y);
6541 }
6542
6543 int32_t onCustomEnemies()
6544 {
6545 /*
6546 char *hold = item_string[0];
6547 item_string[0] = "rupee (1)";
6548 */
6549
6550 int32_t foo;
6551 int32_t index = select_enemy("Select Enemy",bie[0].i,true,true,foo);
6552
6553 while(index >= 0)
6554 {
6555 //I can't get the fucking dialog to handle a simple copy paste so I stuck it here else I'm going to rage kill something.
6556 //,,.Someone feel free to fix the thing properly later on.
6557 //Right now creating custom enemies remains a int32_t painful process, but it shouldn't be this hard for users to use.
6558 //-Two cents worth. -Gleeok
6559 if(key[KEY_OPENBRACE]) //copy
6560 {
6561 if(index != 0)
6562 copiedGuy=index;
6563 }
6564 else if(key[KEY_CLOSEBRACE]) //paste
6565 {
6566 if(copiedGuy>0 && index!=0)
6567 {
6568 guysbuf[index]=guysbuf[copiedGuy];
6569 saved=false;
6570 }
6571 }
6572 else
6573 {
6574 if(index != 0)
6575 {
6576 edit_enemydata(index);
6577 }
6578 }
6579
6580 index = select_enemy("Select Enemy",index,true,true,foo);
6581 }
6582
6583 refresh(rMAP+rCOMBOS);
6584 return D_O_K;
6585 }
6586
6587
6588 int32_t onCustomGuys()
6589 {
6590 return D_O_K;
6591 }
6592
6593 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t c);
6594 static int32_t herotile_land_walk_list[] =
6595 {
6596 // dialog control number
6597 11, 12, 13, 14, 15, 16, 17, 18, -1
6598 };
6599
6600 static int32_t herotile_land_slash_list[] =
6601 {
6602 // dialog control number
6603 19, 20, 21, 22, 23, 24, 25, 26, -1
6604 };
6605
6606 static int32_t herotile_land_stab_list[] =
6607 {
6608 // dialog control number
6609 27, 28, 29, 30, 31, 32, 33, 34, -1
6610 };
6611
6612 static int32_t herotile_land_pound_list[] =
6613 {
6614 // dialog control number
6615 35, 36, 37, 38, 39, 40, 41, 42, -1
6616 };
6617
6618 static int32_t herotile_land_hold_list[] =
6619 {
6620 // dialog control number
6621 43, 44, 45, 46, -1
6622 };
6623
6624 static int32_t herotile_land_cast_list[] =
6625 {
6626 // dialog control number
6627 47, -1
6628 };
6629
6630 static int32_t herotile_land_fall_list[] =
6631 {
6632 // dialog control number
6633 105, 106, 107, 108, 109, 110, 111, 112, -1
6634 };
6635
6636 static int32_t herotile_land_liftwalk_list[] =
6637 {
6638 // dialog control number
6639 260, 261, 262, 263, 264, 265, 266, 267, -1
6640 };
6641 static int32_t herotile_land_lift_list[] =
6642 {
6643 // dialog control number
6644 268, 269, 270, 271, 272, 273, 274, 275,
6645 276, 277, 278, 279, 280, 281, 282, 283,
6646 284, 285, -1
6647 };
6648
6649 static int32_t herotile_land_jump_list[] =
6650 {
6651 // dialog control number
6652 77, 78, 79, 80, 81, 82, 83, 84, -1
6653 };
6654
6655 static int32_t herotile_land_charge_list[] =
6656 {
6657 // dialog control number
6658 85, 86, 87, 88, 89, 90, 91, 92, -1
6659 };
6660
6661 static int32_t herotile_land_revslash_list[] =
6662 {
6663 // dialog control number
6664 252, 253, 254, 255, 256, 257, 258, 259, -1
6665 };
6666
6667 static TABPANEL herotile_land_tabs[] =
6668 {
6669 // (text)
6670 { (char *)"Walk", D_SELECTED, herotile_land_walk_list, 0, NULL },
6671 { (char *)"Slash", 0, herotile_land_slash_list, 0, NULL },
6672 { (char *)"Slash 2", 0, herotile_land_revslash_list, 0, NULL },
6673 { (char *)"Stab", 0, herotile_land_stab_list, 0, NULL },
6674 { (char *)"Pound", 0, herotile_land_pound_list, 0, NULL },
6675 { (char *)"Jump", 0, herotile_land_jump_list, 0, NULL },
6676 { (char *)"Charge", 0, herotile_land_charge_list, 0, NULL },
6677 { (char *)"Hold", 0, herotile_land_hold_list, 0, NULL },
6678 { (char *)"Cast", 0, herotile_land_cast_list, 0, NULL },
6679 { (char *)"Falling", 0, herotile_land_fall_list, 0, NULL },
6680 { (char *)"Lifting", 0, herotile_land_lift_list, 0, NULL },
6681 { (char *)"Lift+Walk", 0, herotile_land_liftwalk_list, 0, NULL },
6682 { NULL, 0, NULL, 0, NULL }
6683 };
6684
6685 static int32_t herotile_water_float_list[] =
6686 {
6687 // dialog control number
6688 48, 49, 50, 51, 52, 53, 54, 55, -1
6689 };
6690
6691 static int32_t herotile_water_swim_list[] =
6692 {
6693 // dialog control number
6694 56, 57, 58, 59, 60, 61, 62, 63, -1
6695 };
6696
6697 static int32_t herotile_water_dive_list[] =
6698 {
6699 // dialog control number
6700 64, 65, 66, 67, 68, 69, 70, 71, -1
6701 };
6702
6703 static int32_t herotile_water_hold_list[] =
6704 {
6705 // dialog control number
6706 72, 73, 74, 75, -1
6707 };
6708
6709 static int32_t herotile_water_drown_list[] =
6710 {
6711 // dialog control number
6712 97, 98, 99, 100, 101, 102, 103, 104, -1
6713 };
6714
6715 static int32_t herotile_lava_drown_list[] =
6716 {
6717 // dialog control number
6718 113, 114, 115, 116, 117, 118, 119, 120, -1
6719 };
6720
6721 static TABPANEL herotile_water_tabs[] =
6722 {
6723 // (text)
6724 { (char *)"Float", D_SELECTED, herotile_water_float_list, 0, NULL },
6725 { (char *)"Swim", 0, herotile_water_swim_list, 0, NULL },
6726 { (char *)"Dive", 0, herotile_water_dive_list, 0, NULL },
6727 { (char *)"Drown", 0, herotile_water_drown_list, 0, NULL },
6728 { (char *)"Hold", 0, herotile_water_hold_list, 0, NULL },
6729 { (char *)"Lava Drown", 0, herotile_lava_drown_list, 0, NULL },
6730 { NULL, 0, NULL, 0, NULL }
6731 };
6732
6733 static int32_t herotile_sidewater_swim_list[] =
6734 {
6735 // dialog control number
6736 196, 197, 198, 199, 200, 201, 202, 203, -1
6737 };
6738
6739 static int32_t herotile_sidewater_slash_list[] =
6740 {
6741 // dialog control number
6742 204, 205, 206, 207, 208, 209, 210, 211, -1
6743 };
6744
6745 static int32_t herotile_sidewater_stab_list[] =
6746 {
6747 // dialog control number
6748 212, 213, 214, 215, 216, 217, 218, 219, -1
6749 };
6750
6751 static int32_t herotile_sidewater_pound_list[] =
6752 {
6753 // dialog control number
6754 220, 221, 222, 223, 224, 225, 226, 227, 236, 237, 238, 239, 240, 241, 242, 243,-1
6755 };
6756
6757 static int32_t herotile_sidewater_charge_list[] =
6758 {
6759 // dialog control number
6760 228, 229, 230, 231, 232, 233, 234, 235, -1
6761 };
6762
6763 static int32_t herotile_sidewater_hold_list[] =
6764 {
6765 // dialog control number
6766 244,245,246,247,248,249,250,251, -1
6767 };
6768
6769 static TABPANEL herotile_sidewater_tabs[] =
6770 {
6771 // (text)
6772 { (char *)"Swim", D_SELECTED, herotile_sidewater_swim_list, 0, NULL },
6773 { (char *)"S. Slash", 0, herotile_sidewater_slash_list, 0, NULL },
6774 { (char *)"S. Stab", 0, herotile_sidewater_stab_list, 0, NULL },
6775 { (char *)"S. Pound", 0, herotile_sidewater_pound_list, 0, NULL },
6776 { (char *)"S. Charge", 0, herotile_sidewater_charge_list, 0, NULL },
6777 { (char *)"S. Misc", 0, herotile_sidewater_hold_list, 0, NULL },
6778 { NULL, 0, NULL, 0, NULL }
6779 };
6780
6781 static int32_t herotile_defense_enemy1_list[] =
6782 {
6783 //dialog control number
6784 122, 123, 124, 125, 126, 127, 128, 129, 130, 145, 146, 147, 148, 149, 150, 151, 152, 153, 168, -1
6785 };
6786
6787 static int32_t herotile_defense_enemy2_list[] =
6788 {
6789 //dialog control number
6790 131, 132, 133, 134, 135, 136, 137, 138, 154, 155, 156, 157, 158, 159, 160, 161, -1
6791 };
6792
6793 static int32_t herotile_defense_other1_list[] =
6794 {
6795 //dialog control number
6796 139, 140, 141, 142, 143, 144, 162, 163, 164, 165, 166, 167, -1
6797 };
6798
6799 static int32_t herotile_defense_script_list[] =
6800 {
6801 //dialog control number
6802 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, -1
6803 };
6804
6805 static TABPANEL herotile_defense_tabs[] =
6806 {
6807 // (text)
6808 { (char*)"Enemy 1", D_SELECTED, herotile_defense_enemy1_list, 0, NULL },
6809 { (char*)"Enemy 2", 0, herotile_defense_enemy2_list, 0, NULL },
6810 { (char*)"Other", 0, herotile_defense_other1_list, 0, NULL },
6811 { (char*)"Script", 0, herotile_defense_script_list, 0, NULL },
6812 { NULL, 0, NULL, 0, NULL }
6813 };
6814
6815
6816 static int32_t herotile_land_list[] =
6817 {
6818 // dialog control number
6819 9, -1
6820 };
6821
6822 static int32_t herotile_water_list[] =
6823 {
6824 // dialog control number
6825 10, -1
6826 };
6827
6828 static int32_t herotile_sidewater_list[] =
6829 {
6830 // dialog control number
6831 195, -1
6832 };
6833
6834 static int32_t herotile_defense_list[] =
6835 {
6836 // dialog control number
6837 121, -1
6838 };
6839
6840 static int32_t herotile_option_list[] =
6841 {
6842 // dialog control number
6843 189, 190, 191, 192, 193, 194, -1
6844 };
6845
6846 static TABPANEL herotile_tabs[] =
6847 {
6848 // (text)
6849 { (char *)"Sprites (Land)", D_SELECTED, herotile_land_list, 0, NULL },
6850 { (char *)"Sprites (Liquid)", 0, herotile_water_list, 0, NULL },
6851 { (char *)"Sprites (Side Liquid)", 0, herotile_sidewater_list, 0, NULL },
6852 { (char *)"Defenses", 0, herotile_defense_list, 0, NULL},
6853 { (char *)"Options", 0, herotile_option_list, 0, NULL },
6854 { NULL, 0, NULL, 0, NULL }
6855 };
6856
6857 const char *animationstyles[las_max]= { "Original", "BS-Zelda", "Zelda 3", "Zelda 3 (Slow Walk)" };
6858
6859 const char *animationstylelist(int32_t index, int32_t *list_size)
6860 {
6861 if(index>=0)
6862 {
6863 return animationstyles[index];
6864 }
6865
6866 *list_size=las_max;
6867 return NULL;
6868 }
6869
6870 const char *swimspeeds[2]= { "Slow", "Fast" };
6871
6872 const char *swimspeedlist(int32_t index, int32_t *list_size)
6873 {
6874 if(index>=0)
6875 {
6876 return swimspeeds[index];
6877 }
6878
6879 *list_size=2;
6880 return NULL;
6881 }
6882
6883 int32_t jwin_as_droplist_proc(int32_t msg,DIALOG *d,int32_t c)
6884 {
6885 int32_t ret = jwin_droplist_proc(msg,d,c);
6886
6887 switch(msg)
6888 {
6889 case MSG_CHAR:
6890 case MSG_CLICK:
6891 zinit.heroAnimationStyle=d->d1;
6892
6893 if(zinit.heroAnimationStyle==las_zelda3slow)
6894 {
6895 hero_animation_speed=2;
6896 }
6897 else
6898 {
6899 hero_animation_speed=1;
6900 }
6901 }
6902
6903 return ret;
6904 }
6905
6906 9 static ListData animationstyle_list(animationstylelist, &font);
6907 9 static ListData swimspeed_list(swimspeedlist, &font);
6908
6909 static DIALOG herotile_dlg[] =
6910 {
6911 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3)
6912 9 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, (void *) "Player Sprites", NULL, NULL },
6913 9 { d_vsync_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6914 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F1, 0, (void *) onHelp, NULL, NULL },
6915 9 { jwin_button_proc, 90, 220, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
6916 9 { jwin_button_proc, 170, 220, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
6917 // 5
6918 9 { d_dummy_proc, 217, 200, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Large Player Hit Box", NULL, NULL },
6919 9 { d_dummy_proc, 4, 201, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Animation Style:", NULL, NULL },
6920 9 { d_dummy_proc, 77, 197, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &animationstyle_list, NULL, NULL },
6921 9 { jwin_tab_proc, 4, 17, 312, 200, 0, 0, 0, 0, 0, 0, (void *) herotile_tabs, NULL, (void *)herotile_dlg },
6922 // 9
6923 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_land_tabs, NULL, (void *)herotile_dlg },
6924 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_water_tabs, NULL, (void *)herotile_dlg },
6925 // 11 (walk sprite titles)
6926 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6927 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6928 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6929 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6930 // 15 (walk sprites)
6931 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_walk, NULL, NULL, NULL },
6932 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_walk, NULL, NULL, NULL },
6933 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_walk, NULL, NULL, NULL },
6934 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_walk, NULL, NULL, NULL },
6935 // 19 (slash spritetitles)
6936 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6937 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6938 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6939 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6940 // 23 (slash sprites)
6941 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_slash, NULL, NULL, NULL },
6942 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_slash, NULL, NULL, NULL },
6943 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_slash, NULL, NULL, NULL },
6944 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_slash, NULL, NULL, NULL },
6945 // 27 (stab sprite titles)
6946 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6947 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6948 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6949 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6950 // 31 (stab sprites)
6951 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_stab, NULL, NULL, NULL },
6952 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_stab, NULL, NULL, NULL },
6953 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_stab, NULL, NULL, NULL },
6954 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_stab, NULL, NULL, NULL },
6955 // 35 (pound sprite titles)
6956 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6957 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6958 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6959 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6960 // 39 (pound sprites)
6961 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_pound, NULL, NULL, NULL },
6962 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_pound, NULL, NULL, NULL },
6963 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_pound, NULL, NULL, NULL },
6964 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_pound, NULL, NULL, NULL },
6965 // 43 (hold sprite titles)
6966 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6967 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6968 // 45 (hold sprites)
6969 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_landhold1, NULL, NULL, NULL },
6970 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_landhold2, NULL, NULL, NULL },
6971 // 47 (casting sprites)
6972 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_cast, NULL, NULL, NULL },
6973
6974 // 48 (float sprite titles)
6975 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6976 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6977 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6978 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6979 // 52 (float sprites)
6980 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_float, NULL, NULL, NULL },
6981 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_float, NULL, NULL, NULL },
6982 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_float, NULL, NULL, NULL },
6983 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_float, NULL, NULL, NULL },
6984 // 56 (swim sprite titles)
6985 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6986 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6987 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6988 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6989 // 60 (swim sprites)
6990 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_swim, NULL, NULL, NULL },
6991 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_swim, NULL, NULL, NULL },
6992 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_swim, NULL, NULL, NULL },
6993 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_swim, NULL, NULL, NULL },
6994 // 64 (dive sprite titles)
6995 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6996 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6997 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6998 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6999 // 68 (dive sprites)
7000 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_dive, NULL, NULL, NULL },
7001 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_dive, NULL, NULL, NULL },
7002 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_dive, NULL, NULL, NULL },
7003 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_dive, NULL, NULL, NULL },
7004 // 72 (hold sprite titles)
7005 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
7006 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
7007 // 74 (hold sprites)
7008 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_waterhold1, NULL, NULL, NULL },
7009 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_waterhold2, NULL, NULL, NULL },
7010 9 { d_dummy_proc, 217, 186, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Diagonal Movement", NULL, NULL },
7011 // 77 (jump sprite titles)
7012 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7013 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7014 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7015 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7016 // 81 (jump sprites)
7017 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_jump, NULL, NULL, NULL },
7018 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_jump, NULL, NULL, NULL },
7019 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_jump, NULL, NULL, NULL },
7020 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_jump, NULL, NULL, NULL },
7021 // 85 (charge sprite titles)
7022 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7023 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7024 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7025 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7026 // 89 (charge sprites)
7027 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_charge, NULL, NULL, NULL },
7028 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_charge, NULL, NULL, NULL },
7029 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_charge, NULL, NULL, NULL },
7030 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_charge, NULL, NULL, NULL },
7031 // 93
7032 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
7033 9 { d_dummy_proc, 4, 183, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Swim Speed:", NULL, NULL },
7034 9 { d_dummy_proc, 77, 179, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &swimspeed_list, NULL, NULL },
7035 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
7036 // 97 (drown sprite titles)
7037 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7038 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7039 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7040 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7041 // 101 (drown sprites)
7042 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_drown, NULL, NULL, NULL },
7043 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_drown, NULL, NULL, NULL },
7044 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_drown, NULL, NULL, NULL },
7045 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_drown, NULL, NULL, NULL },
7046 // 105 (falling sprite titles)
7047 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7048 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7049 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7050 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7051 // 109 (falling sprites)
7052 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_falling, NULL, NULL, NULL },
7053 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_falling, NULL, NULL, NULL },
7054 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_falling, NULL, NULL, NULL },
7055 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_falling, NULL, NULL, NULL },
7056
7057 // 113 (lavadrown sprite titles)
7058 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7059 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7060 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7061 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7062 // 117 (lavadrown sprites)
7063 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lavadrown, NULL, NULL, NULL },
7064 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lavadrown, NULL, NULL, NULL },
7065 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lavadrown, NULL, NULL, NULL },
7066 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lavadrown, NULL, NULL, NULL },
7067
7068 // DEFENSE TAB BEGINS
7069 // 121 (Player defenses)
7070 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void*)herotile_defense_tabs, NULL, (void*)herotile_dlg },
7071 // 122 - Enemy weapons (currently 17)
7072 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball Defense:", NULL, NULL },
7073 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Arrow Defense:", NULL, NULL },
7074 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Boomerang Defense:", NULL, NULL },
7075 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Sword Beam Defense:", NULL, NULL },
7076 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Rock Defense:", NULL, NULL },
7077 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Magic Defense:", NULL, NULL },
7078 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (object) Defense:", NULL, NULL },
7079 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (object) Defense:", NULL, NULL },
7080 9 { jwin_text_proc, 9, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (explode) Defense:", NULL, NULL },
7081 // 131 - Enemy weapons page 2
7082 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (explode) Defense:", NULL, NULL },
7083 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Trail Defense:", NULL, NULL },
7084 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Defense:", NULL, NULL },
7085 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Wind Defense:", NULL, NULL },
7086 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Defense:", NULL, NULL },
7087 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Trail Defense:", NULL, NULL },
7088 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Ice Defense:", NULL, NULL },
7089 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball 2 Defense:", NULL, NULL },
7090 // 139 - Other weapons (Currently 6)
7091 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Candle Fire Defense:", NULL, NULL },
7092 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Player Bomb Defense:", NULL, NULL },
7093 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Magic Defense:", NULL, NULL },
7094 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Fireball Defense:", NULL, NULL },
7095 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Rock Defense:", NULL, NULL },
7096 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Sword Beam Defense:", NULL, NULL },
7097 // 145 - Enemy weapons pulldown
7098 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7099 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7100 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7101 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7102 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7103 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7104 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7105 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7106 9 { jwin_droplist_proc, 126, 198 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7107 // 154 - Enemy weapons pulldown page 2
7108 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7109 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7110 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7111 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7112 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7113 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7114 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7115 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7116 // 162 - Other weapon pulldown
7117 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7118 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7119 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7120 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7121 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7122 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7123 // 168 - Set all button
7124 9 { jwin_button_proc, 255, 54 - 4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"Set All", NULL, NULL },
7125
7126
7127 // 169 - Script 1
7128 9 { jwin_text_proc, 9, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 1 Defense:", NULL, NULL },
7129 9 { jwin_text_proc, 9, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 2 Defense:", NULL, NULL },
7130 9 { jwin_text_proc, 9, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 3 Defense:", NULL, NULL },
7131 9 { jwin_text_proc, 9, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 4 Defense:", NULL, NULL },
7132 9 { jwin_text_proc, 9, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 5 Defense:", NULL, NULL },
7133 9 { jwin_text_proc, 9, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 6 Defense:", NULL, NULL },
7134 9 { jwin_text_proc, 9, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 7 Defense:", NULL, NULL },
7135 9 { jwin_text_proc, 9, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 8 Defense:", NULL, NULL },
7136 9 { jwin_text_proc, 9, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 9 Defense:", NULL, NULL },
7137 9 { jwin_text_proc, 9, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 10 Defense:", NULL, NULL },
7138 //179 script 1 pulldown
7139
7140 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
7141 9 { jwin_droplist_proc, 126, 51 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7142 9 { jwin_droplist_proc, 126, 67 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7143 9 { jwin_droplist_proc, 126, 83 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7144 9 { jwin_droplist_proc, 126, 99 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7145 9 { jwin_droplist_proc, 126, 115 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7146 9 { jwin_droplist_proc, 126, 131 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7147 9 { jwin_droplist_proc, 126, 147 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7148 9 { jwin_droplist_proc, 126, 163 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7149 9 { jwin_droplist_proc, 126, 179 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7150 9 { jwin_droplist_proc, 126, 196 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
7151 // 189 - Options relocated to handle new tab
7152 9 { jwin_check_proc, 9, 78, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Large Player Hit Box", NULL, NULL },
7153 9 { jwin_text_proc, 9, 38, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Animation Style:", NULL, NULL },
7154 9 { jwin_as_droplist_proc, 89, 34, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&animationstyle_list, NULL, NULL },
7155 9 { jwin_check_proc, 9, 90, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Diagonal Movement", NULL, NULL },
7156 9 { jwin_text_proc, 9, 54, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Swim Speed:", NULL, NULL },
7157 9 { jwin_droplist_proc, 89, 50, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&swimspeed_list, NULL, NULL },
7158 //195 Sideview water tab
7159 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_sidewater_tabs, NULL, (void *)herotile_dlg },
7160 // 196 (sideswim sprite titles)
7161 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7162 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7163 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7164 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7165 // 200 (sideswim sprites)
7166 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswim, NULL, NULL, NULL },
7167 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswim, NULL, NULL, NULL },
7168 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswim, NULL, NULL, NULL },
7169 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswim, NULL, NULL, NULL },
7170 // 204 (sideswim slash sprite titles)
7171 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7172 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7173 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7174 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7175 // 208 (sideswim slash sprites)
7176 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimslash, NULL, NULL, NULL },
7177 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimslash, NULL, NULL, NULL },
7178 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimslash, NULL, NULL, NULL },
7179 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimslash, NULL, NULL, NULL },
7180 // 212 (sideswim stab sprite titles)
7181 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7182 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7183 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7184 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7185 // 216 (sideswim stab sprites)
7186 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimstab, NULL, NULL, NULL },
7187 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimstab, NULL, NULL, NULL },
7188 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimstab, NULL, NULL, NULL },
7189 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimstab, NULL, NULL, NULL },
7190 // 220 (sideswim pound sprite titles)
7191 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7192 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7193 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7194 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7195 // 224 (sideswim pound sprites)
7196 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimpound, NULL, NULL, NULL },
7197 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimpound, NULL, NULL, NULL },
7198 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimpound, NULL, NULL, NULL },
7199 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimpound, NULL, NULL, NULL },
7200 // 228 (sideswim charge sprite titles)
7201 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7202 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7203 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7204 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7205 // 232 (sideswim charge sprites)
7206 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcharge, NULL, NULL, NULL },
7207 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimcharge, NULL, NULL, NULL },
7208 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimcharge, NULL, NULL, NULL },
7209 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimcharge, NULL, NULL, NULL },
7210 // 236 (swim hammer offset titles)
7211 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
7212 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
7213 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
7214 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
7215 // 240 (swim hammer offset fields)
7216 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7217 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7218 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7219 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7220 // 244 (hold sprite titles)
7221 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "1 Hand", NULL, NULL },
7222 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Casting", NULL, NULL },
7223 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "2 Hands", NULL, NULL },
7224 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Drown", NULL, NULL },
7225 // 248 (hold sprites)
7226 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sidewaterhold1, NULL, NULL, NULL },
7227 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcast, NULL, NULL, NULL },
7228 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sidewaterhold2, NULL, NULL, NULL },
7229 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sidedrown, NULL, NULL, NULL },
7230 // 252 (revslash sprite titles)
7231 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7232 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7233 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7234 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7235 // 256 (revslash sprites)
7236 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_revslash, NULL, NULL, NULL },
7237 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_revslash, NULL, NULL, NULL },
7238 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_revslash, NULL, NULL, NULL },
7239 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_revslash, NULL, NULL, NULL },
7240 // 260 (lifting)
7241 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7242 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7243 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7244 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7245 // 264 (lift sprites)
7246 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_liftwalk, NULL, NULL, NULL },
7247 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_liftwalk, NULL, NULL, NULL },
7248 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_liftwalk, NULL, NULL, NULL },
7249 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_liftwalk, NULL, NULL, NULL },
7250 // 268 (lifting)
7251 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
7252 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
7253 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
7254 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
7255 // 272 (lift sprites)
7256 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lifting, NULL, NULL, NULL },
7257 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lifting, NULL, NULL, NULL },
7258 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lifting, NULL, NULL, NULL },
7259 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lifting, NULL, NULL, NULL },
7260 // 276 (lift frame count labels)
7261 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
7262 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
7263 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
7264 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
7265 // 280 (lift frame count fields)
7266 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7267 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7268 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7269 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7270 // 284 (lift speed preview value)
7271 9 { jwin_rtext_proc, 60, 58, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Preview Speed", NULL, NULL },
7272 9 { jwin_edit_proc, 63, 55, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
7273
7274 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
7275
7276 };
7277
7278 static char liftspeed[4] = "4";
7279 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t)
7280 {
7281 //d1=dir
7282 //d2=type (determines how to animate)
7283 //fg=cset (6)
7284 enum {lt_clock, lt_tile, lt_flip, lt_extend, lt_frames};
7285 static int32_t bg=makecol(0, 0, 0);
7286 int32_t *p=(int32_t*)d->dp3;
7287 int32_t oldtile=0;
7288 int32_t oldflip=0;
7289
7290 switch(msg)
7291 {
7292 case MSG_START:
7293 {
7294 d->dp3=(int32_t*)malloc(sizeof(int32_t)*5);
7295 p=(int32_t*)d->dp3;
7296 p[lt_clock]=0;
7297 p[lt_tile]=0;
7298 p[lt_flip]=0;
7299 p[lt_extend]=0;
7300 p[lt_frames]=0;
7301 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7302 if(d->d2 == ls_lifting)
7303 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
7304 break;
7305 }
7306
7307 case MSG_CLICK:
7308 {
7309 int32_t t;
7310 int32_t f;
7311 int32_t extend;
7312 int32_t cs = 6;
7313 herotile(&t, &f, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
7314
7315 switch(extend)
7316 {
7317 case 0:
7318 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+32+8+2, d->y+(16+32)+2))
7319 {
7320 return D_O_K;
7321 }
7322
7323 break;
7324
7325 case 1:
7326 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+(32)+8+2, d->y+(4+64)+2))
7327 {
7328 return D_O_K;
7329 }
7330
7331 break;
7332
7333 case 2:
7334 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+4, d->x+(64)+8+2, d->y+(4+64)+2))
7335 {
7336 return D_O_K;
7337 }
7338
7339 break;
7340 }
7341
7342 if((CHECK_CTRL_CMD)
7343 ? select_tile_2(t,f,2,cs,false,extend,true)
7344 : select_tile(t,f,2,cs,false,extend,true))
7345 {
7346 extend=ex;
7347 setherotile(t,f,extend,d->d2,d->d1);
7348 return D_REDRAW;
7349 }
7350 }
7351 break;
7352
7353 case MSG_VSYNC:
7354 {
7355 oldtile=p[lt_tile];
7356 oldflip=p[lt_flip];
7357 p[lt_clock]++;
7358 auto lspeed = vbound(atoi(liftspeed),1,255);
7359 if(d->d2 == ls_lifting)
7360 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
7361
7362 switch(zinit.heroAnimationStyle)
7363 {
7364 case las_original: //2-frame
7365 switch(d->d2)
7366 {
7367 case ls_charge:
7368 case ls_walk:
7369 {
7370 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7371
7372 if(p[lt_clock]>=6)
7373 {
7374 if(d->d1==up&&d->d2==ls_walk)
7375 {
7376 p[lt_flip]=1; //h flip
7377 }
7378 else
7379 {
7380 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7381 }
7382 };
7383
7384 if(p[lt_clock]>=11)
7385 {
7386 p[lt_clock]=-1;
7387 }
7388
7389 break;
7390 }
7391
7392 case ls_sideswim:
7393 case ls_sideswimcharge:
7394 {
7395 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7396
7397 if(p[lt_clock]>=6)
7398 {
7399 if(d->d1==up&&d->d2==ls_sideswim)
7400 {
7401 p[lt_flip]=1; //h flip
7402 }
7403 else
7404 {
7405 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7406 }
7407 };
7408
7409 if(p[lt_clock]>=11)
7410 {
7411 p[lt_clock]=-1;
7412 }
7413
7414 break;
7415 }
7416
7417 case ls_sideswimslash:
7418 {
7419 if(p[lt_clock]<6)
7420 {
7421 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7422 }
7423 else if(p[lt_clock]<12)
7424 {
7425 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7426 }
7427 else if(p[lt_clock]<13)
7428 {
7429 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7430 }
7431 else
7432 {
7433 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7434 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7435
7436 if(p[lt_clock]>=16)
7437 {
7438 p[lt_clock]=-1;
7439 }
7440 };
7441
7442 break;
7443 }
7444
7445 case ls_sideswimstab:
7446 {
7447 if(p[lt_clock]<12)
7448 {
7449 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7450 }
7451 else if(p[lt_clock]<13)
7452 {
7453 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7454 }
7455 else
7456 {
7457 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7458 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7459
7460 if(p[lt_clock]>=16)
7461 {
7462 p[lt_clock]=-1;
7463 }
7464 };
7465
7466 break;
7467 }
7468
7469 case ls_sideswimpound:
7470 {
7471 if(p[lt_clock]<12)
7472 {
7473 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7474 }
7475 else if(p[lt_clock]<30)
7476 {
7477 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7478 }
7479 else
7480 {
7481 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7482
7483 if(p[lt_clock]>=31)
7484 {
7485 p[lt_clock]=-1;
7486 }
7487 };
7488
7489 break;
7490 }
7491
7492 case ls_jump:
7493 {
7494 if(p[lt_clock]>=24)
7495 {
7496 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7497
7498 if(p[lt_clock]>=36)
7499 {
7500 p[lt_clock]=-1;
7501 }
7502 }
7503 else
7504 {
7505 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7506 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7507 }
7508
7509 break;
7510 }
7511
7512 case ls_slash:
7513 {
7514 if(p[lt_clock]<6)
7515 {
7516 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7517 }
7518 else if(p[lt_clock]<12)
7519 {
7520 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7521 }
7522 else if(p[lt_clock]<13)
7523 {
7524 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7525 }
7526 else
7527 {
7528 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7529 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7530
7531 if(p[lt_clock]>=16)
7532 {
7533 p[lt_clock]=-1;
7534 }
7535 };
7536
7537 break;
7538 }
7539
7540 case ls_revslash:
7541 {
7542 if(p[lt_clock]<6)
7543 {
7544 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7545 }
7546 else if(p[lt_clock]<12)
7547 {
7548 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7549 }
7550 else if(p[lt_clock]<13)
7551 {
7552 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7553 }
7554 else
7555 {
7556 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7557 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7558
7559 if(p[lt_clock]>=16)
7560 {
7561 p[lt_clock]=-1;
7562 }
7563 };
7564
7565 break;
7566 }
7567
7568 case ls_stab:
7569 {
7570 if(p[lt_clock]<12)
7571 {
7572 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7573 }
7574 else if(p[lt_clock]<13)
7575 {
7576 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7577 }
7578 else
7579 {
7580 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7581 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7582
7583 if(p[lt_clock]>=16)
7584 {
7585 p[lt_clock]=-1;
7586 }
7587 };
7588
7589 break;
7590 }
7591
7592 case ls_pound:
7593 {
7594 if(p[lt_clock]<12)
7595 {
7596 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7597 }
7598 else if(p[lt_clock]<30)
7599 {
7600 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7601 }
7602 else
7603 {
7604 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7605
7606 if(p[lt_clock]>=31)
7607 {
7608 p[lt_clock]=-1;
7609 }
7610 };
7611
7612 break;
7613 }
7614
7615 case ls_float:
7616 {
7617 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7618
7619 if(p[lt_clock]>=12)
7620 {
7621 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7622 };
7623
7624 if(p[lt_clock]>=23)
7625 {
7626 p[lt_clock]=-1;
7627 }
7628
7629 break;
7630 }
7631
7632 case ls_swim:
7633 {
7634 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7635
7636 if(p[lt_clock]>=12)
7637 {
7638 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7639 };
7640
7641 if(p[lt_clock]>=23)
7642 {
7643 p[lt_clock]=-1;
7644 }
7645
7646 break;
7647 }
7648
7649 case ls_dive:
7650 {
7651 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7652
7653 if(p[lt_clock]>=50)
7654 {
7655 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7656 };
7657
7658 if((p[lt_clock]/12)&1)
7659 {
7660 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7661 };
7662
7663 if(p[lt_clock]>=81)
7664 {
7665 p[lt_clock]=-1;
7666 }
7667
7668 break;
7669 }
7670
7671 case ls_drown:
7672 {
7673 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7674
7675 if(p[lt_clock]<=4)
7676 {
7677 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7678 };
7679
7680 if((p[lt_clock]/12)&1)
7681 {
7682 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7683 };
7684
7685 if(p[lt_clock]>=81)
7686 {
7687 p[lt_clock]=-1;
7688 }
7689
7690 break;
7691 }
7692 case ls_sidedrown:
7693 {
7694 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7695
7696
7697 if((p[lt_clock]/12)&1)
7698 {
7699 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7700 };
7701
7702 if(p[lt_clock]>=81)
7703 {
7704 p[lt_clock]=-1;
7705 }
7706
7707 if(p[lt_clock]<=4)
7708 {
7709 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7710 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7711 };
7712 break;
7713 }
7714
7715 case ls_lavadrown:
7716 {
7717 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7718
7719 if(p[lt_clock]<=4)
7720 {
7721 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7722 };
7723
7724 if((p[lt_clock]/12)&1)
7725 {
7726 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7727 };
7728
7729 if(p[lt_clock]>=81)
7730 {
7731 p[lt_clock]=-1;
7732 }
7733
7734 break;
7735 }
7736
7737 case ls_falling:
7738 {
7739 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7740 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7741 break;
7742 }
7743
7744 case ls_landhold1:
7745 {
7746 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7747 break;
7748 }
7749
7750 case ls_landhold2:
7751 {
7752 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7753 break;
7754 }
7755
7756 case ls_waterhold1:
7757 {
7758 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7759 break;
7760 }
7761
7762 case ls_waterhold2:
7763 {
7764 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7765 break;
7766 }
7767
7768 case ls_sidewaterhold1:
7769 {
7770 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7771 break;
7772 }
7773
7774 case ls_sidewaterhold2:
7775 {
7776 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7777 break;
7778 }
7779
7780 case ls_cast:
7781 {
7782 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7783
7784 if(p[lt_clock]<96)
7785 {
7786 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7787 };
7788
7789 if(p[lt_clock]>=194)
7790 {
7791 p[lt_clock]=-1;
7792 }
7793
7794 break;
7795 }
7796
7797 case ls_sideswimcast:
7798 {
7799 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7800
7801 if(p[lt_clock]<96)
7802 {
7803 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7804 };
7805
7806 if(p[lt_clock]>=194)
7807 {
7808 p[lt_clock]=-1;
7809 }
7810
7811 break;
7812 }
7813
7814 case ls_lifting:
7815 {
7816 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7817 size_t fr = p[lt_clock] / lspeed;
7818 if(fr >= p[lt_frames])
7819 {
7820 fr = 0;
7821 p[lt_clock] = -1;
7822 }
7823 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7824 break;
7825 }
7826 case ls_liftwalk:
7827 {
7828 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7829 if(p[lt_clock]>=6)
7830 {
7831 if(d->d1==up)
7832 {
7833 p[lt_flip]=1; //h flip
7834 }
7835 else
7836 {
7837 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7838 }
7839 };
7840
7841 if(p[lt_clock]>=11)
7842 {
7843 p[lt_clock]=-1;
7844 }
7845 break;
7846 }
7847
7848 default:
7849 break;
7850 }
7851
7852 break;
7853
7854 case las_bszelda: //3-frame BS
7855 switch(d->d2)
7856 {
7857 case ls_charge:
7858 case ls_walk:
7859 {
7860 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7861 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7862
7863 if(p[lt_clock]>=27)
7864 {
7865 p[lt_clock]=-1;
7866 }
7867
7868 break;
7869 }
7870
7871 case ls_sideswim:
7872 case ls_sideswimcharge:
7873 {
7874 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7875 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7876
7877 if(p[lt_clock]>=27)
7878 {
7879 p[lt_clock]=-1;
7880 }
7881
7882 break;
7883 }
7884
7885 case ls_sideswimslash:
7886 {
7887 if(p[lt_clock]<6)
7888 {
7889 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7890 }
7891 else if(p[lt_clock]<12)
7892 {
7893 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7894 }
7895 else if(p[lt_clock]<13)
7896 {
7897 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7898 }
7899 else
7900 {
7901 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7902 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7903
7904 if(p[lt_clock]>=16)
7905 {
7906 p[lt_clock]=-1;
7907 }
7908 };
7909
7910 break;
7911 }
7912
7913 case ls_sideswimstab:
7914 {
7915 if(p[lt_clock]<12)
7916 {
7917 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7918 }
7919 else if(p[lt_clock]<13)
7920 {
7921 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7922 }
7923 else
7924 {
7925 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7926 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7927
7928 if(p[lt_clock]>=16)
7929 {
7930 p[lt_clock]=-1;
7931 }
7932 };
7933
7934 break;
7935 }
7936
7937 case ls_sideswimpound:
7938 {
7939 if(p[lt_clock]<12)
7940 {
7941 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7942 }
7943 else if(p[lt_clock]<30)
7944 {
7945 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7946 }
7947 else
7948 {
7949 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7950
7951 if(p[lt_clock]>=31)
7952 {
7953 p[lt_clock]=-1;
7954 }
7955 };
7956
7957 break;
7958 }
7959
7960 case ls_jump:
7961 {
7962 if(p[lt_clock]>=24)
7963 {
7964 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7965
7966 if(p[lt_clock]>=36)
7967 {
7968 p[lt_clock]=-1;
7969 }
7970 }
7971 else
7972 {
7973 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7974 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7975 }
7976
7977 break;
7978 }
7979
7980 case ls_slash:
7981 {
7982 if(p[lt_clock]<6)
7983 {
7984 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7985 }
7986 else if(p[lt_clock]<12)
7987 {
7988 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7989 }
7990 else if(p[lt_clock]<13)
7991 {
7992 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7993 }
7994 else
7995 {
7996 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7997 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7998
7999 if(p[lt_clock]>=16)
8000 {
8001 p[lt_clock]=-1;
8002 }
8003 };
8004
8005 break;
8006 }
8007
8008 case ls_revslash:
8009 {
8010 if(p[lt_clock]<6)
8011 {
8012 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
8013 }
8014 else if(p[lt_clock]<12)
8015 {
8016 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
8017 }
8018 else if(p[lt_clock]<13)
8019 {
8020 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
8021 }
8022 else
8023 {
8024 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8025 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
8026
8027 if(p[lt_clock]>=16)
8028 {
8029 p[lt_clock]=-1;
8030 }
8031 };
8032
8033 break;
8034 }
8035
8036 case ls_stab:
8037 {
8038 if(p[lt_clock]<12)
8039 {
8040 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
8041 }
8042 else if(p[lt_clock]<13)
8043 {
8044 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
8045 }
8046 else
8047 {
8048 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8049 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
8050
8051 if(p[lt_clock]>=16)
8052 {
8053 p[lt_clock]=-1;
8054 }
8055 };
8056
8057 break;
8058 }
8059
8060 case ls_pound:
8061 {
8062 if(p[lt_clock]<12)
8063 {
8064 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
8065 }
8066 else if(p[lt_clock]<30)
8067 {
8068 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
8069 }
8070 else
8071 {
8072 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
8073
8074 if(p[lt_clock]>=31)
8075 {
8076 p[lt_clock]=-1;
8077 }
8078 };
8079
8080 break;
8081 }
8082
8083 case ls_float:
8084 {
8085 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8086 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8087
8088 if(p[lt_clock]>=55)
8089 {
8090 p[lt_clock]=-1;
8091 }
8092
8093 break;
8094 }
8095
8096 case ls_swim:
8097 {
8098 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
8099 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8100
8101 if(p[lt_clock]>=55)
8102 {
8103 p[lt_clock]=-1;
8104 }
8105
8106 break;
8107 }
8108
8109 case ls_dive:
8110 {
8111 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
8112
8113 if(p[lt_clock]>=50)
8114 {
8115 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8116 };
8117
8118 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8119
8120 if(p[lt_clock]>=81)
8121 {
8122 p[lt_clock]=-1;
8123 }
8124
8125 break;
8126 }
8127
8128 case ls_drown:
8129 {
8130 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
8131
8132 if(p[lt_clock]<=4)
8133 {
8134 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8135 };
8136
8137 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8138
8139 if(p[lt_clock]>=81)
8140 {
8141 p[lt_clock]=-1;
8142 }
8143
8144 break;
8145 }
8146
8147 case ls_sidedrown:
8148 {
8149 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
8150 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8151
8152 if(p[lt_clock]<=4)
8153 {
8154 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8155 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8156 };
8157
8158
8159 if(p[lt_clock]>=81)
8160 {
8161 p[lt_clock]=-1;
8162 }
8163
8164 break;
8165 }
8166
8167 case ls_lavadrown:
8168 {
8169 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
8170
8171 if(p[lt_clock]<=4)
8172 {
8173 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8174 };
8175
8176 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8177
8178 if(p[lt_clock]>=81)
8179 {
8180 p[lt_clock]=-1;
8181 }
8182
8183 break;
8184 }
8185
8186 case ls_falling:
8187 {
8188 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
8189 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
8190 break;
8191 }
8192
8193 case ls_landhold1:
8194 {
8195 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
8196 break;
8197 }
8198
8199 case ls_landhold2:
8200 {
8201 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8202 break;
8203 }
8204
8205 case ls_waterhold1:
8206 {
8207 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
8208 break;
8209 }
8210
8211 case ls_waterhold2:
8212 {
8213 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
8214 break;
8215 }
8216
8217 case ls_sidewaterhold1:
8218 {
8219 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
8220 break;
8221 }
8222
8223 case ls_sidewaterhold2:
8224 {
8225 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8226 break;
8227 }
8228
8229 case ls_cast:
8230 {
8231 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
8232
8233 if(p[lt_clock]<96)
8234 {
8235 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8236 }
8237
8238 if(p[lt_clock]>=194)
8239 {
8240 p[lt_clock]=-1;
8241 }
8242
8243 break;
8244 }
8245
8246 case ls_sideswimcast:
8247 {
8248 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
8249
8250 if(p[lt_clock]<96)
8251 {
8252 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8253 };
8254
8255 if(p[lt_clock]>=194)
8256 {
8257 p[lt_clock]=-1;
8258 }
8259
8260 break;
8261 }
8262
8263 case ls_lifting:
8264 {
8265 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
8266 size_t fr = p[lt_clock] / lspeed;
8267 if(fr >= p[lt_frames])
8268 {
8269 fr = 0;
8270 p[lt_clock] = -1;
8271 }
8272 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
8273 break;
8274 }
8275 case ls_liftwalk:
8276 {
8277 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
8278 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
8279
8280 if(p[lt_clock]>=27)
8281 {
8282 p[lt_clock]=-1;
8283 }
8284 break;
8285 }
8286
8287 default:
8288 break;
8289 }
8290 break;
8291
8292 case las_zelda3slow: //multi-frame Zelda 3 (slow)
8293 case las_zelda3: //multi-frame Zelda 3
8294 switch(d->d2)
8295 {
8296 case ls_charge:
8297 case ls_walk:
8298 {
8299 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
8300
8301 if(p[lt_clock]>=(64*(hero_animation_speed)))
8302 {
8303 p[lt_tile]+=(p[lt_extend]==2?2:1);
8304
8305 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8306 l-=((l>3)?1:0)+((l>12)?1:0);
8307 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8308
8309 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
8310 if(p[lt_clock]>=255)
8311 {
8312 p[lt_clock]=-1;
8313 }
8314 }
8315
8316 break;
8317 }
8318 case ls_sideswim:
8319 case ls_sideswimcharge:
8320 {
8321 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
8322
8323 if(p[lt_clock]>=(64*(hero_animation_speed)))
8324 {
8325 p[lt_tile]+=(p[lt_extend]==2?2:1);
8326
8327 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8328 l-=((l>3)?1:0)+((l>12)?1:0);
8329 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8330
8331 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
8332 if(p[lt_clock]>=255)
8333 {
8334 p[lt_clock]=-1;
8335 }
8336 }
8337
8338 break;
8339
8340 case ls_sideswimstab:
8341 {
8342 if(p[lt_clock]>35)
8343 {
8344 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
8345 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8346
8347 if(p[lt_clock]>=47)
8348 {
8349 p[lt_clock]=-1;
8350 }
8351 }
8352 else
8353 {
8354 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8355 }
8356
8357 break;
8358 }
8359
8360 case ls_sideswimslash:
8361 {
8362 if(p[lt_clock]>23)
8363 {
8364 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
8365 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8366
8367 if(p[lt_clock]>=47)
8368 {
8369 p[lt_clock]=-1;
8370 }
8371 }
8372 else
8373 {
8374 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8375 }
8376
8377 break;
8378 }
8379
8380 case ls_sideswimpound:
8381 {
8382 if(p[lt_clock]>35)
8383 {
8384 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
8385 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8386
8387 if(p[lt_clock]>=47)
8388 {
8389 p[lt_clock]=-1;
8390 }
8391 }
8392 else
8393 {
8394 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8395 }
8396
8397 break;
8398 }
8399
8400 case ls_jump:
8401 {
8402 if(p[lt_clock]>=24)
8403 {
8404 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8405
8406 if(p[lt_clock]>=36)
8407 {
8408 p[lt_clock]=-1;
8409 }
8410 }
8411 else
8412 {
8413 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8414 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8415 }
8416
8417 break;
8418 }
8419
8420 case ls_slash:
8421 {
8422 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8423 {
8424 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_slash, d->d1, zinit.heroAnimationStyle);
8425 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8426
8427 if(p[lt_clock]>=47)
8428 {
8429 p[lt_clock]=-1;
8430 }
8431 }
8432 else
8433 {
8434 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8435 }
8436
8437 break;
8438 }
8439
8440 case ls_revslash:
8441 {
8442 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8443 {
8444 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_revslash, d->d1, zinit.heroAnimationStyle);
8445 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8446
8447 if(p[lt_clock]>=47)
8448 {
8449 p[lt_clock]=-1;
8450 }
8451 }
8452 else
8453 {
8454 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8455 }
8456
8457 break;
8458 }
8459
8460 case ls_stab: //12 frames, advances by one every 4 frames, 3 tiles total.
8461 if(p[lt_clock]>35)
8462 {
8463 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_stab, d->d1, zinit.heroAnimationStyle);
8464 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8465
8466 if(p[lt_clock]>=47)
8467 {
8468 p[lt_clock]=-1;
8469 }
8470 }
8471 else
8472 {
8473 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8474 }
8475
8476 break;
8477 }
8478
8479 case ls_pound:
8480 {
8481 if(p[lt_clock]>35)
8482 {
8483 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_pound, d->d1, zinit.heroAnimationStyle);
8484 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8485
8486 if(p[lt_clock]>=47)
8487 {
8488 p[lt_clock]=-1;
8489 }
8490 }
8491 else
8492 {
8493 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8494 }
8495
8496 break;
8497 }
8498
8499 case ls_float:
8500 {
8501 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8502 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8503
8504 if(p[lt_clock]>=23)
8505 {
8506 p[lt_clock]=-1;
8507 }
8508
8509 break;
8510 }
8511
8512 case ls_swim:
8513 {
8514 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
8515 p[lt_tile]+=((p[lt_clock]/12)%4)<<(p[lt_extend]==2?1:0);
8516
8517 if(p[lt_clock]>=47)
8518 {
8519 p[lt_clock]=-1;
8520 }
8521
8522 break;
8523 }
8524
8525 case ls_dive:
8526 {
8527 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
8528
8529 if(p[lt_clock]>=50)
8530 {
8531 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8532 };
8533
8534 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8535
8536 if(p[lt_clock]>=81)
8537 {
8538 p[lt_clock]=-1;
8539 }
8540
8541 break;
8542 }
8543
8544 case ls_drown:
8545 {
8546 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
8547
8548 if(p[lt_clock]<=4)
8549 {
8550 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8551 };
8552
8553 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8554
8555 if(p[lt_clock]>=81)
8556 {
8557 p[lt_clock]=-1;
8558 }
8559
8560 break;
8561 }
8562
8563 case ls_sidedrown:
8564 {
8565 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
8566 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8567
8568 if(p[lt_clock]<=4)
8569 {
8570 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8571 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8572 };
8573
8574
8575 if(p[lt_clock]>=81)
8576 {
8577 p[lt_clock]=-1;
8578 }
8579
8580 break;
8581 }
8582
8583 case ls_lavadrown:
8584 {
8585 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
8586
8587 if(p[lt_clock]<=4)
8588 {
8589 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8590 };
8591
8592 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8593
8594 if(p[lt_clock]>=81)
8595 {
8596 p[lt_clock]=-1;
8597 }
8598
8599 break;
8600 }
8601
8602 case ls_falling:
8603 {
8604 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
8605 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
8606 break;
8607 }
8608
8609 case ls_landhold1:
8610 {
8611 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
8612 break;
8613 }
8614
8615 case ls_landhold2:
8616 {
8617 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8618 break;
8619 }
8620
8621 case ls_waterhold1:
8622 {
8623 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
8624 break;
8625 }
8626
8627 case ls_waterhold2:
8628 {
8629 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
8630 break;
8631 }
8632
8633 case ls_sidewaterhold1:
8634 {
8635 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
8636 break;
8637 }
8638
8639 case ls_sidewaterhold2:
8640 {
8641 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8642 break;
8643 }
8644
8645 case ls_cast:
8646 {
8647 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
8648
8649 if(p[lt_clock]<96)
8650 {
8651 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8652 };
8653
8654 if(p[lt_clock]>=194)
8655 {
8656 p[lt_clock]=-1;
8657 }
8658
8659 break;
8660 }
8661
8662 case ls_sideswimcast:
8663 {
8664 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
8665
8666 if(p[lt_clock]<96)
8667 {
8668 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8669 };
8670
8671 if(p[lt_clock]>=194)
8672 {
8673 p[lt_clock]=-1;
8674 }
8675
8676 break;
8677 }
8678
8679 case ls_lifting:
8680 {
8681 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
8682 size_t fr = p[lt_clock] / lspeed;
8683 if(fr >= p[lt_frames])
8684 {
8685 fr = 0;
8686 p[lt_clock] = -1;
8687 }
8688 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
8689 break;
8690 }
8691 case ls_liftwalk:
8692 {
8693 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
8694
8695 if(p[lt_clock]>=(64*(hero_animation_speed)))
8696 {
8697 p[lt_tile]+=(p[lt_extend]==2?2:1);
8698
8699 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8700 l-=((l>3)?1:0)+((l>12)?1:0);
8701 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8702
8703 if(p[lt_clock]>=255)
8704 {
8705 p[lt_clock]=-1;
8706 }
8707 }
8708 break;
8709 }
8710
8711 default:
8712 break;
8713 }
8714 break;
8715
8716 default:
8717 break;
8718 }
8719
8720 if((p[lt_tile]!=oldtile)||(p[lt_flip]!=oldflip))
8721 {
8722 d->flags|=D_DIRTY;
8723 }
8724
8725 break;
8726 }
8727
8728 case MSG_DRAW:
8729 {
8730 BITMAP *buf=create_bitmap_ex(8,1,1);
8731 BITMAP *buf2=buf;
8732 int32_t dummy1, dummy2;
8733 int32_t extend;
8734 herotile(&dummy1, &dummy2, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
8735 int32_t w = 16;
8736 int32_t h = 16;
8737
8738 switch(extend)
8739 {
8740 case 0: //16x16
8741 break;
8742
8743 case 1: //16x32
8744 w = 16;
8745 h = 32;
8746 break;
8747
8748 case 2: //32x32
8749 w = 32;
8750 h = 32;
8751 break;
8752
8753 default:
8754 break;
8755 }
8756
8757 buf = create_bitmap_ex(8,w,h);
8758
8759 w *= 2;
8760 h *= 2;
8761
8762 BITMAP *bigbmp = create_bitmap_ex(8,w+4,h+4);
8763
8764 if(buf && bigbmp)
8765 {
8766 clear_to_color(buf, bg);
8767
8768 switch(extend)
8769 {
8770 case 0:
8771 overtile16(buf,p[lt_tile],0,0,6,p[lt_flip]);
8772 stretch_blit(buf, bigbmp, 0,0, 16, 16, 2, 2, w, h);
8773 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8774 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8775 break;
8776
8777 case 1:
8778 overtile16(buf,p[lt_tile]-TILES_PER_ROW,0,0,6,p[lt_flip]);
8779 overtile16(buf,p[lt_tile],0,16,6,p[lt_flip]);
8780 stretch_blit(buf, bigbmp, 0,0, 16, 32, 2, 2, w, h);
8781 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8782 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8783 break;
8784
8785 case 2:
8786 overtile16(buf,p[lt_tile]-TILES_PER_ROW,8,0,6,p[lt_flip]); //top middle
8787 overtile16(buf,p[lt_tile]-TILES_PER_ROW-(p[lt_flip]?-1:1),-8,0,6,p[lt_flip]); //top left
8788 overtile16(buf,p[lt_tile]-TILES_PER_ROW+(p[lt_flip]?-1:1),8+16,0,6,p[lt_flip]); //top right
8789 overtile16(buf,p[lt_tile]-(p[lt_flip]?-1:1),-8,16,6,p[lt_flip]); //bottom left
8790 overtile16(buf,p[lt_tile]+(p[lt_flip]?-1:1),8+16,16,6,p[lt_flip]); //bottom right
8791 overtile16(buf,p[lt_tile],8,16,6,p[lt_flip]); //bottom middle
8792 stretch_blit(buf, bigbmp, 0,0, 32, 32, 2, 2, w, h);
8793 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8794 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8795 break;
8796
8797 default:
8798 break;
8799 }
8800
8801 destroy_bitmap(bigbmp);
8802 destroy_bitmap(buf);
8803 destroy_bitmap(buf2);
8804 }
8805 }
8806 break;
8807
8808 case MSG_END:
8809 {
8810 free(d->dp3);
8811 break;
8812 }
8813 }
8814
8815 return D_O_K;
8816 }
8817
8818 int32_t onCustomHero()
8819 {
8820 //setupherotiles(zinit.heroAnimationStyle);
8821 if(zinit.heroAnimationStyle==las_zelda3slow)
8822 {
8823 hero_animation_speed=2;
8824 }
8825 else
8826 {
8827 hero_animation_speed=1;
8828 }
8829
8830 herotile_dlg[0].dp2=get_zc_font(font_lfont);
8831 herotile_dlg[189].flags = get_qr(qr_LTTPCOLLISION)? D_SELECTED : 0;
8832 herotile_dlg[192].flags = get_qr(qr_LTTPWALK)? D_SELECTED : 0;
8833 herotile_dlg[194].d1=(zinit.hero_swim_speed<60)?0:1;
8834 herotile_dlg[191].d1=zinit.heroAnimationStyle;
8835
8836 large_dialog(herotile_dlg, 2.0);
8837
8838 int32_t oldWalkSpr[4][3];
8839 int32_t oldStabSpr[4][3];
8840 int32_t oldSlashSpr[4][3];
8841 int32_t oldRevSlashSpr[4][3];
8842 int32_t oldFloatSpr[4][3];
8843 int32_t oldSwimSpr[4][3];
8844 int32_t oldDiveSpr[4][3];
8845 int32_t oldPoundSpr[4][3];
8846 int32_t oldJumpSpr[4][3];
8847 int32_t oldChargeSpr[4][3];
8848 int32_t oldCastSpr[3];
8849 int32_t oldsideswimCastSpr[3];
8850 int32_t oldHoldSpr[2][3][3];
8851 int32_t oldDrownSpr[4][3];
8852 int32_t oldSideDrownSpr[4][3];
8853 int32_t oldFallSpr[4][3];
8854 int32_t oldLavaDrownSpr[4][3];
8855 int32_t oldSideSwimSpr[4][3];
8856 int32_t oldSideSwimSlashSpr[4][3];
8857 int32_t oldSideSwimStabSpr[4][3];
8858 int32_t oldSideSwimPoundSpr[4][3];
8859 int32_t oldSideSwimChargeSpr[4][3];
8860 int32_t oldSideSwimHoldSpr[3][3];
8861 int32_t oldLiftingSpr[4][4];
8862 int32_t oldLiftingWalkSpr[4][3];
8863 char hmr1[8];
8864 char hmr2[8];
8865 char hmr3[8];
8866 char hmr4[8];
8867 sprintf(hmr1,"%d",hammeroffsets[0]);
8868 sprintf(hmr2,"%d",hammeroffsets[1]);
8869 sprintf(hmr3,"%d",hammeroffsets[2]);
8870 sprintf(hmr4,"%d",hammeroffsets[3]);
8871 herotile_dlg[240].dp = hmr1;
8872 herotile_dlg[241].dp = hmr2;
8873 herotile_dlg[242].dp = hmr3;
8874 herotile_dlg[243].dp = hmr4;
8875 char liftframes1[4];
8876 char liftframes2[4];
8877 char liftframes3[4];
8878 char liftframes4[4];
8879 sprintf(liftframes1,"%d",vbound(liftingspr[0][spr_frames],1,255));
8880 sprintf(liftframes2,"%d",vbound(liftingspr[1][spr_frames],1,255));
8881 sprintf(liftframes3,"%d",vbound(liftingspr[2][spr_frames],1,255));
8882 sprintf(liftframes4,"%d",vbound(liftingspr[3][spr_frames],1,255));
8883 herotile_dlg[280].dp = liftframes1;
8884 herotile_dlg[281].dp = liftframes2;
8885 herotile_dlg[282].dp = liftframes3;
8886 herotile_dlg[283].dp = liftframes4;
8887 herotile_dlg[285].dp = liftspeed;
8888 memcpy(oldWalkSpr, walkspr, 4*3*sizeof(int32_t));
8889 memcpy(oldStabSpr, stabspr, 4*3*sizeof(int32_t));
8890 memcpy(oldSlashSpr, slashspr, 4*3*sizeof(int32_t));
8891 memcpy(oldRevSlashSpr, revslashspr, 4*3*sizeof(int32_t));
8892 memcpy(oldFloatSpr, floatspr, 4*3*sizeof(int32_t));
8893 memcpy(oldSwimSpr, swimspr, 4*3*sizeof(int32_t));
8894 memcpy(oldDiveSpr, divespr, 4*3*sizeof(int32_t));
8895 memcpy(oldPoundSpr, poundspr, 4*3*sizeof(int32_t));
8896 memcpy(oldJumpSpr, jumpspr, 4*3*sizeof(int32_t));
8897 memcpy(oldChargeSpr, chargespr, 4*3*sizeof(int32_t));
8898 memcpy(oldCastSpr, castingspr, 3*sizeof(int32_t));
8899 memcpy(oldsideswimCastSpr, sideswimcastingspr, 3*sizeof(int32_t));
8900 memcpy(oldHoldSpr, holdspr, 2*3*3*sizeof(int32_t));
8901 memcpy(oldDrownSpr, drowningspr, 4*3*sizeof(int32_t));
8902 memcpy(oldSideDrownSpr, sidedrowningspr, 4*3*sizeof(int32_t));
8903 memcpy(oldFallSpr, fallingspr, 4*3*sizeof(int32_t));
8904 memcpy(oldLavaDrownSpr, drowning_lavaspr, 4*3*sizeof(int32_t));
8905 memcpy(oldSideSwimSpr, sideswimspr, 4*3*sizeof(int32_t));
8906 memcpy(oldSideSwimSlashSpr, sideswimslashspr, 4*3*sizeof(int32_t));
8907 memcpy(oldSideSwimStabSpr, sideswimstabspr, 4*3*sizeof(int32_t));
8908 memcpy(oldSideSwimPoundSpr, sideswimpoundspr, 4*3*sizeof(int32_t));
8909 memcpy(oldSideSwimChargeSpr, sideswimchargespr, 4*3*sizeof(int32_t));
8910 memcpy(oldSideSwimHoldSpr, sideswimholdspr, 3*3*sizeof(int32_t));
8911 memcpy(oldLiftingSpr, liftingspr, 4*4*sizeof(int32_t));
8912 memcpy(oldLiftingWalkSpr, liftingwalkspr, 4*3*sizeof(int32_t));
8913
8914 //Populate Player defenses
8915 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8916 {
8917 herotile_dlg[144 + i].d1 = hero_defence[wEnemyWeapons+i];
8918 }
8919 herotile_dlg[154+8].d1 = hero_defence[wFire];
8920 herotile_dlg[155+8].d1 = hero_defence[wBomb];
8921 herotile_dlg[156+8].d1 = hero_defence[wRefMagic];
8922 herotile_dlg[157+8].d1 = hero_defence[wRefFireball];
8923 herotile_dlg[158+8].d1 = hero_defence[wRefRock];
8924 herotile_dlg[159+8].d1 = hero_defence[wRefBeam];
8925
8926 herotile_dlg[171+8].d1 = hero_defence[wScript1];
8927 herotile_dlg[172+8].d1 = hero_defence[wScript2];
8928 herotile_dlg[173+8].d1 = hero_defence[wScript3];
8929 herotile_dlg[174+8].d1 = hero_defence[wScript4];
8930 herotile_dlg[175+8].d1 = hero_defence[wScript5];
8931 herotile_dlg[176+8].d1 = hero_defence[wScript6];
8932 herotile_dlg[177+8].d1 = hero_defence[wScript7];
8933 herotile_dlg[178+8].d1 = hero_defence[wScript8];
8934 herotile_dlg[179+8].d1 = hero_defence[wScript9];
8935 herotile_dlg[180+8].d1 = hero_defence[wScript10];
8936
8937 int32_t ret = 0;
8938 do
8939 {
8940 ret = do_zqdialog(herotile_dlg, 3);
8941
8942 if (ret == 3)
8943 {
8944 saved = false;
8945 set_qr(qr_LTTPCOLLISION, (herotile_dlg[181+8].flags & D_SELECTED) ? 1 : 0);
8946 set_qr(qr_LTTPWALK, (herotile_dlg[184+8].flags & D_SELECTED) ? 1 : 0);
8947 zinit.hero_swim_speed = (herotile_dlg[186+8].d1 == 0) ? 50 : 67;
8948
8949 //Save Player defenses
8950 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8951 {
8952 hero_defence[wEnemyWeapons + i] = herotile_dlg[137 + 7 + i].d1;
8953 }
8954 hero_defence[wFire] = herotile_dlg[154+8].d1;
8955 hero_defence[wBomb] = herotile_dlg[155+8].d1;
8956 hero_defence[wRefMagic] = herotile_dlg[156+8].d1;
8957 hero_defence[wRefFireball] = herotile_dlg[157+8].d1;
8958 hero_defence[wRefRock] = herotile_dlg[158+8].d1;
8959 hero_defence[wRefBeam] = herotile_dlg[159+8].d1;
8960
8961 hero_defence[wScript1] = herotile_dlg[171+8].d1;
8962 hero_defence[wScript2] = herotile_dlg[172+8].d1;
8963 hero_defence[wScript3] = herotile_dlg[173+8].d1;
8964 hero_defence[wScript4] = herotile_dlg[174+8].d1;
8965 hero_defence[wScript5] = herotile_dlg[175+8].d1;
8966 hero_defence[wScript6] = herotile_dlg[176+8].d1;
8967 hero_defence[wScript7] = herotile_dlg[177+8].d1;
8968 hero_defence[wScript8] = herotile_dlg[178+8].d1;
8969 hero_defence[wScript9] = herotile_dlg[179+8].d1;
8970 hero_defence[wScript10] = herotile_dlg[180+8].d1;
8971 hammeroffsets[0] = atoi(hmr1);
8972 hammeroffsets[1] = atoi(hmr2);
8973 hammeroffsets[2] = atoi(hmr3);
8974 hammeroffsets[3] = atoi(hmr4);
8975 liftingspr[0][spr_frames] = vbound(atoi(liftframes1),1,255);
8976 liftingspr[1][spr_frames] = vbound(atoi(liftframes2),1,255);
8977 liftingspr[2][spr_frames] = vbound(atoi(liftframes3),1,255);
8978 liftingspr[3][spr_frames] = vbound(atoi(liftframes4),1,255);
8979 }
8980 else if (ret == 168)
8981 {
8982 for (int32_t i = 146; i < 168; i++)
8983 {
8984 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8985 }
8986 for (int32_t i = 179; i < 189; i++)
8987 {
8988 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8989 }
8990 }
8991 else
8992 {
8993 memcpy(walkspr, oldWalkSpr, 4 * 3 * sizeof(int32_t));
8994 memcpy(stabspr, oldStabSpr, 4 * 3 * sizeof(int32_t));
8995 memcpy(slashspr, oldSlashSpr, 4 * 3 * sizeof(int32_t));
8996 memcpy(revslashspr, oldRevSlashSpr, 4 * 3 * sizeof(int32_t));
8997 memcpy(floatspr, oldFloatSpr, 4 * 3 * sizeof(int32_t));
8998 memcpy(swimspr, oldSwimSpr, 4 * 3 * sizeof(int32_t));
8999 memcpy(divespr, oldDiveSpr, 4 * 3 * sizeof(int32_t));
9000 memcpy(poundspr, oldPoundSpr, 4 * 3 * sizeof(int32_t));
9001 memcpy(jumpspr, oldJumpSpr, 4 * 3 * sizeof(int32_t));
9002 memcpy(chargespr, oldChargeSpr, 4 * 3 * sizeof(int32_t));
9003 memcpy(castingspr, oldCastSpr, 3 * sizeof(int32_t));
9004 memcpy(sideswimcastingspr, oldsideswimCastSpr, 3 * sizeof(int32_t));
9005 memcpy(holdspr, oldHoldSpr, 2*3*3*sizeof(int32_t));
9006 memcpy(drowningspr, oldDrownSpr, 4 * 3 * sizeof(int32_t));
9007 memcpy(sidedrowningspr, oldSideDrownSpr, 4 * 3 * sizeof(int32_t));
9008 memcpy(fallingspr, oldFallSpr, 4 * 3 * sizeof(int32_t));
9009 memcpy(drowning_lavaspr, oldLavaDrownSpr, 4 * 3 * sizeof(int32_t));
9010 memcpy(sideswimspr, oldSideSwimSpr, 4 * 3 * sizeof(int32_t));
9011 memcpy(sideswimslashspr, oldSideSwimSlashSpr, 4 * 3 * sizeof(int32_t));
9012 memcpy(sideswimstabspr, oldSideSwimStabSpr, 4 * 3 * sizeof(int32_t));
9013 memcpy(sideswimpoundspr, oldSideSwimPoundSpr, 4 * 3 * sizeof(int32_t));
9014 memcpy(sideswimchargespr, oldSideSwimChargeSpr, 4 * 3 * sizeof(int32_t));
9015 memcpy(sideswimholdspr, oldSideSwimHoldSpr, 3* 3 * sizeof(int32_t));
9016 memcpy(liftingspr, oldLiftingSpr, 4 * 4 * sizeof(int32_t));
9017 memcpy(liftingwalkspr, oldLiftingWalkSpr, 4 * 3 * sizeof(int32_t));
9018 }
9019 } while (ret == 168);
9020
9021 return D_O_K;
9022 }
9023
9024 6 void center_zq_custom_dialogs()
9025 {
9026 6 jwin_center_dialog(herotile_dlg);
9027 6 jwin_center_dialog(wpndata_dlg);
9028 6 jwin_center_dialog(enedata_dlg);
9029 6 }
9030